Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Commit d8af5509b9d95ef45b0a29763d57d1a0a8c55ce0


Parents : 55f718c
Author : Sudo-Ivan <ivan@quad4.io>
Signature : Signature validation error
Date : 2026-01-07T19:13:48-06:00

feat(locales): update German and Russian translations, add Italian localization

- Enhanced German and Russian JSON files with new entries for telemetry, location management, and content security policy settings.
- Added Italian localization file with comprehensive translations for the application, covering various features and settings.
- Improved user experience by ensuring consistent terminology across all supported languages.

Changes
Diff

diff --git a/meshchatx/src/frontend/locales/de.json b/meshchatx/src/frontend/locales/de.json
index 1ad9e3ed..5997a6aa 100644
--- a/meshchatx/src/frontend/locales/de.json
+++ b/meshchatx/src/frontend/locales/de.json
@@ -194,9 +194,42 @@
"emergency_mode_active": "Notfallmodus aktiv - In-Memory-Datenbank und eingeschränkte Dienste werden verwendet.",
"blackhole_integration_enabled": "Blackhole-Integration",
"blackhole_integration_description": "Identitäten automatisch auf der Reticulum-Transportebene sperren (Blackhole), wenn Benutzer in MeshChatX verbannt werden.",
- "failed_announce": "failed to announce",
- "search_settings": "Search settings...",
- "show_qr": "Show QR Code"
+ "failed_announce": "Ankündigung fehlgeschlagen",
+ "search_settings": "Einstellungen suchen...",
+ "show_qr": "QR-Code anzeigen",
+ "csp_settings": "Content-Security-Policy (CSP)",
+ "csp_description": "Fügen Sie manuell erlaubte Domains und Quellen für verschiedene Ressourcentypen hinzu. Dies ist nützlich für benutzerdefinierte Kachelserver, Bots oder externe Integrationen.",
+ "csp_extra_connect_src": "Zusätzliche Connect-Quellen",
+ "csp_extra_connect_src_description": "Zusätzliche Quellen für fetch/Websocket-Verbindungen (z. B. https://api.example.com).",
+ "csp_extra_img_src": "Zusätzliche Bildquellen",
+ "csp_extra_img_src_description": "Zusätzliche Quellen für Bilder und Kacheln.",
+ "csp_extra_frame_src": "Zusätzliche Frame-Quellen",
+ "csp_extra_frame_src_description": "Zusätzliche Quellen für Iframes.",
+ "csp_extra_script_src": "Zusätzliche Skriptquellen",
+ "csp_extra_script_src_description": "Zusätzliche Quellen für Skripte (nur für fortgeschrittene Benutzer).",
+ "csp_extra_style_src": "Zusätzliche Style-Quellen",
+ "csp_extra_style_src_description": "Zusätzliche Quellen für Stylesheets.",
+ "location": "Standort",
+ "location_source": "Standortquelle",
+ "location_source_browser": "Automatisch (Browser)",
+ "location_source_manual": "Manuell",
+ "location_source_browser_desc": "Verwendet die Geolocation-API Ihres Browsers. Hinweis: In der Desktop-App kann dies Google-Dienste nutzen.",
+ "location_source_manual_desc": "Verwenden Sie manuell eingegebene Koordinaten für maximale Privatsphäre.",
+ "location_manual_lat": "Breitengrad",
+ "location_manual_lon": "Längengrad",
+ "location_manual_alt": "Höhe (m)",
+ "telemetry_enabled": "Telemetrie aktiviert",
+ "telemetry_description": "Erlauben Sie MeshChatX das Senden und Empfangen von Telemetriedaten. Dies beinhaltet die Beantwortung von Standortanfragen von vertrauenswürdigen Peers.",
+ "telemetry_trusted_peers": "Vertrauenswürdige Telemetrie-Peers",
+ "telemetry_no_trusted_peers": "Keine vertrauenswürdigen Peers konfiguriert. Vertrauen Sie Peers aus dem Chat-Menü, um ihnen zu erlauben, Ihren Standort abzufragen.",
+ "telemetry_revoke_trust": "Vertrauen entziehen",
+ "telemetry_trust_revoked": "Telemetrie-Vertrauen für {name} entzogen",
+ "telemetry_trust_granted_alert": "Peer ist nun für Telemetrie vertrauenswürdig.",
+ "telemetry_trust_revoked_alert": "Telemetrie-Vertrauen entzogen.",
+ "telemetry_trust_failed": "Fehler beim Aktualisieren des Telemetrie-Vertrauens.",
+ "telemetry_trust_revoke": "Telemetrie-Vertrauen entziehen",
+ "telemetry_trust_grant": "Für Telemetrie vertrauen",
+ "location_manage_desc": "Verwalten Sie, wie Ihr Standort geteilt wird."
},
"common": {
"open": "Öffnen",
@@ -362,6 +395,7 @@
"export_all": "Alle exportieren",
"search_placeholder": "Suche nach Name, Typ, Host...",
"all": "Alle",
+ "connected_only": "Nur verbundene",
"all_types": "Alle Typen",
"no_interfaces_found": "Keine Schnittstellen gefunden",
"no_interfaces_description": "Passen Sie Ihre Suche an oder fügen Sie eine neue Schnittstelle hinzu.",
@@ -572,7 +606,10 @@
"no_contacts_telephone": "No contacts found in telephone",
"failed_load_contacts": "Failed to load contacts",
"location_request_sent": "Location request sent",
- "failed_send_location_request": "Failed to send location request",
+ "failed_send_location_request": "Senden der Standortanfrage fehlgeschlagen",
+ "fetching_location": "Standort wird abgerufen...",
+ "location_sent": "Standort erfolgreich geteilt",
+ "location_requested": "Standort angefordert",
"remove_image_confirm": "Are you sure you want to remove this image attachment?",
"failed_start_recording": "failed to start recording",
"remove_audio_confirm": "Are you sure you want to remove this audio attachment?",
@@ -740,6 +777,21 @@
"queues_purged": "Announce queues purged",
"failed_purge": "Failed to purge queues"
},
+ "rnpath_trace": {
+ "title": "RNS Pfad-Verfolgung",
+ "description": "Visualisiere den Pfad und die Hops zu einem Ziel-Hash im Mesh.",
+ "destination_hash": "Ziel-Hash",
+ "placeholder": "32-stelligen Ziel-Hash eingeben...",
+ "trace": "Pfad verfolgen",
+ "tracing": "Verfolge Pfad durch das Mesh...",
+ "total_hops": "Gesamt Hops",
+ "interface": "Ausgangs-Schnittstelle",
+ "next_hop": "Nächster Hop",
+ "ready_title": "Einen Pfad verfolgen",
+ "ready_desc": "Gib oben einen Ziel-Hash ein, um zu visualisieren, wie Pakete durch das Mesh reisen.",
+ "unknown_hops": "{count} Zwischen-Hops",
+ "ping_test": "Mit Ping testen"
+ },
"translator": {
"title": "Übersetzer",
"description": "Text mit der LibreTranslate API oder lokalem Argos Translate übersetzen."
@@ -897,15 +949,15 @@
"description": "Erstellen und lesen Sie LXMF-signierte Papiernachrichten über QR-Codes."
},
"rns_page_node": {
- "title": "RNS Page-Knoten",
+ "title": "RNS Page Node",
"description": "Nomadnet-Micron-Seiten hosten und Dateien mühelos teilen."
},
"rns_tunnel": {
- "title": "RNS-Tunnel",
+ "title": "RNSTunnel",
"description": "Regulären IP-Verkehr über Reticulum-Netzwerkverbindungen tunneln."
},
"rns_filesync": {
- "title": "RNS-Dateisynchronisierung",
+ "title": "RNSFilesync",
"description": "Dateien effizient mit anderen Mesh-Peers teilen und synchronisieren."
},
"bots": {
@@ -1328,14 +1380,16 @@
"nav_settings_desc": "Einstellungsseite öffnen",
"nav_ping": "Ping",
"nav_ping_desc": "Netzwerkknoten pingen",
- "nav_rnprobe": "RN Probe",
+ "nav_rnprobe": "RNProbe",
"nav_rnprobe_desc": "Reticulum-Knoten sondieren",
- "nav_rncp": "RN CP",
+ "nav_rncp": "RNCP",
"nav_rncp_desc": "Reticulum Control Protocol",
- "nav_rnstatus": "RN Status",
+ "nav_rnstatus": "RNStatus",
"nav_rnstatus_desc": "Reticulum-Status anzeigen",
- "nav_rnpath": "RN Pfad",
+ "nav_rnpath": "RNPath",
"nav_rnpath_desc": "Netzwerkpfade anzeigen",
+ "nav_rnpath_trace": "RNPath-Verfolgung",
+ "nav_rnpath_trace_desc": "Netzwerkpfade visualisieren",
"nav_translator": "Übersetzer",
"nav_translator_desc": "Nachrichten übersetzen",
"nav_forwarder": "Weiterleiter",
@@ -1450,4 +1504,4 @@
"banishment_lifted": "Banishment lifted successfully",
"failed_lift_banishment": "Failed to lift banishment"
}
-}
\ No newline at end of file
+}

diff --git a/meshchatx/src/frontend/locales/en.json b/meshchatx/src/frontend/locales/en.json
index fa5ba685..4ffb4bc4 100644
--- a/meshchatx/src/frontend/locales/en.json
+++ b/meshchatx/src/frontend/locales/en.json
@@ -196,7 +196,40 @@
"loading_identity": "Loading your identity",
"emergency_mode_active": "Emergency Mode Active - Using in-memory database and restricted services.",
"blackhole_integration_enabled": "Blackhole Integration",
- "blackhole_integration_description": "Automatically blackhole identities at the Reticulum transport layer when banishing users in MeshChatX."
+ "blackhole_integration_description": "Automatically blackhole identities at the Reticulum transport layer when banishing users in MeshChatX.",
+ "csp_settings": "Content Security Policy (CSP)",
+ "csp_description": "Manually add allowed domains and sources for various resource types. This is useful for custom tile servers, bots, or external integrations.",
+ "csp_extra_connect_src": "Extra Connect Sources",
+ "csp_extra_connect_src_description": "Additional sources for fetch/websocket connections (e.g. https://api.example.com).",
+ "csp_extra_img_src": "Extra Image Sources",
+ "csp_extra_img_src_description": "Additional sources for images and tiles.",
+ "csp_extra_frame_src": "Extra Frame Sources",
+ "csp_extra_frame_src_description": "Additional sources for iframes.",
+ "csp_extra_script_src": "Extra Script Sources",
+ "csp_extra_script_src_description": "Additional sources for scripts (advanced use only).",
+ "csp_extra_style_src": "Extra Style Sources",
+ "csp_extra_style_src_description": "Additional sources for stylesheets.",
+ "location": "Location",
+ "location_source": "Location Source",
+ "location_source_browser": "Automatic (Browser)",
+ "location_source_manual": "Manual",
+ "location_source_browser_desc": "Uses your browser's geolocation API. Note: In the desktop app, this may use Google services.",
+ "location_source_manual_desc": "Use manually entered coordinates for maximum privacy.",
+ "location_manual_lat": "Latitude",
+ "location_manual_lon": "Longitude",
+ "location_manual_alt": "Altitude (m)",
+ "telemetry_enabled": "Telemetry Enabled",
+ "telemetry_description": "Allow MeshChatX to send and receive telemetry data. This includes responding to location requests from trusted peers.",
+ "telemetry_trusted_peers": "Trusted Telemetry Peers",
+ "telemetry_no_trusted_peers": "No trusted peers configured. Trust peers from the chat menu to allow them to request your location.",
+ "telemetry_revoke_trust": "Revoke Trust",
+ "telemetry_trust_revoked": "Revoked telemetry trust for {name}",
+ "telemetry_trust_granted_alert": "Peer is now trusted for telemetry.",
+ "telemetry_trust_revoked_alert": "Telemetry trust revoked.",
+ "telemetry_trust_failed": "Failed to update telemetry trust.",
+ "telemetry_trust_revoke": "Revoke Telemetry Trust",
+ "telemetry_trust_grant": "Trust for Telemetry",
+ "location_manage_desc": "Manage how your location is shared."
},
"common": {
"open": "Open",
@@ -362,6 +395,7 @@
"export_all": "Export all",
"search_placeholder": "Search by name, type, host...",
"all": "All",
+ "connected_only": "Connected only",
"all_types": "All types",
"no_interfaces_found": "No interfaces found",
"no_interfaces_description": "Adjust your search or add a new interface.",
@@ -575,6 +609,9 @@
"failed_load_contacts": "Failed to load contacts",
"location_request_sent": "Location request sent",
"failed_send_location_request": "Failed to send location request",
+ "fetching_location": "Fetching location...",
+ "location_sent": "Location shared successfully",
+ "location_requested": "Location requested",
"remove_image_confirm": "Are you sure you want to remove this image attachment?",
"failed_start_recording": "failed to start recording",
"remove_audio_confirm": "Are you sure you want to remove this audio attachment?",
@@ -829,6 +866,21 @@
"queues_purged": "Announce queues purged",
"failed_purge": "Failed to purge queues"
},
+ "rnpath_trace": {
+ "title": "RNS Path Trace",
+ "description": "Visualize the path and hops to any destination hash on the mesh.",
+ "destination_hash": "Destination Hash",
+ "placeholder": "Enter 32-char destination hash...",
+ "trace": "Trace Path",
+ "tracing": "Tracing path through the mesh...",
+ "total_hops": "Total Hops",
+ "interface": "Exit Interface",
+ "next_hop": "Next Hop",
+ "ready_title": "Trace a Path",
+ "ready_desc": "Enter a destination hash above to visualize how packets travel through the mesh to reach it.",
+ "unknown_hops": "{count} Intermediate Hops",
+ "ping_test": "Test with Ping"
+ },
"translator": {
"title": "Translator",
"description": "Translate text using LibreTranslate API or local Argos Translate."
@@ -1417,14 +1469,16 @@
"nav_settings_desc": "Open settings page",
"nav_ping": "Ping",
"nav_ping_desc": "Ping network nodes",
- "nav_rnprobe": "RN Probe",
+ "nav_rnprobe": "RNProbe",
"nav_rnprobe_desc": "Probe Reticulum nodes",
- "nav_rncp": "RN CP",
+ "nav_rncp": "RNCP",
"nav_rncp_desc": "Reticulum Control Protocol",
- "nav_rnstatus": "RN Status",
+ "nav_rnstatus": "RNStatus",
"nav_rnstatus_desc": "View Reticulum status",
- "nav_rnpath": "RN Path",
+ "nav_rnpath": "RNPath",
"nav_rnpath_desc": "View network paths",
+ "nav_rnpath_trace": "RNPath Trace",
+ "nav_rnpath_trace_desc": "Visualize network paths",
"nav_translator": "Translator",
"nav_translator_desc": "Translate messages",
"nav_forwarder": "Forwarder",
@@ -1450,4 +1504,4 @@
"action_changelog": "Changelog",
"action_changelog_desc": "View what's new"
}
-}
\ No newline at end of file
+}

diff --git a/meshchatx/src/frontend/locales/it.json b/meshchatx/src/frontend/locales/it.json
new file mode 100644
index 00000000..00237238
--- /dev/null
+++ b/meshchatx/src/frontend/locales/it.json
@@ -0,0 +1,1503 @@
+{
+ "bots": {
+ "title": "LXMFy Bot",
+ "description": "Gestisci bot automatizzati per echo, note e promemoria usando LXMFy.",
+ "bot_framework": "Bot Framework",
+ "lxmfy_not_detected": "LXMFy non rilevato",
+ "lxmfy_not_detected_desc": "Per usare i bot, devi installare il pacchetto LXMFy:",
+ "install_via_pip": "Installa via pip",
+ "create_new_bot": "Crea Nuovo Bot",
+ "running_bots": "Bot in Esecuzione",
+ "no_bots_running": "Nessun bot è attualmente in esecuzione.",
+ "select": "Seleziona",
+ "start_bot": "Avvia Bot",
+ "stop_bot": "Ferma Bot",
+ "restart_bot": "Riavvia Bot",
+ "saved_bots": "Bot Salvati",
+ "bot_name": "Nome Bot",
+ "cancel": "Annulla",
+ "bot_started": "Bot avviato con successo",
+ "bot_stopped": "Bot fermato",
+ "failed_to_start": "Impossibile avviare il bot",
+ "failed_to_stop": "Impossibile fermare il bot",
+ "delete_bot": "Elimina Bot",
+ "export_identity": "Esporta Identità",
+ "bot_deleted": "Bot eliminato con successo",
+ "failed_to_delete": "Impossibile eliminare il bot",
+ "more_bots_coming": "Altri bot in arrivo!"
+ },
+ "app": {
+ "name": "Reticulum MeshChatX",
+ "sync_messages": "Sincronizza Messaggi",
+ "compose": "Componi",
+ "messages": "Messaggi",
+ "nomad_network": "Nomad Network",
+ "map": "Mappa",
+ "archives": "Archivi",
+ "propagation_nodes": "Nodi di Propagazione",
+ "network_visualiser": "Visualizzatore di Rete",
+ "interfaces": "Interfacce",
+ "tools": "Strumenti",
+ "settings": "Impostazioni",
+ "identities": "Identità",
+ "documentation": "Documentazione",
+ "about": "Informazioni",
+ "changelog_title": "Novità",
+ "do_not_show_again": "Non mostrare più per questa versione",
+ "do_not_show_ever": "Non mostrare mai più",
+ "tutorial_title": "Guida Introduttiva",
+ "tutorial_welcome": "Benvenuto in MeshChatX",
+ "tutorial_connect": "Connettiti alla Mesh",
+ "tutorial_finish": "Pronto per Iniziare!",
+ "tutorial_restart_required": "Riavvio Richiesto",
+ "tutorial_docker_note": "Se stai usando Docker, assicurati di riavviare il container.",
+ "my_identity": "La Mia Identità",
+ "identity_hash": "Hash Identità",
+ "lxmf_address": "Indirizzo LXMF",
+ "announce": "Annuncia",
+ "announce_now": "Annuncia Ora",
+ "show_qr": "Mostra Codice QR",
+ "failed_announce": "impossibile annunciare",
+ "last_announced": "Ultimo annuncio: {time}",
+ "last_announced_never": "Ultimo annuncio: Mai",
+ "display_name_placeholder": "Nome Visualizzato",
+ "profile": "Profilo",
+ "manage_identity": "Gestisci la tua identità, la partecipazione al trasporto e i predefiniti LXMF.",
+ "theme": "Tema",
+ "theme_mode": "Modalità {mode}",
+ "transport": "Trasporto",
+ "enabled": "Abilitato",
+ "disabled": "Disabilitato",
+ "propagation": "Propagazione",
+ "local_node_running": "Nodo locale in esecuzione",
+ "client_only": "Solo client",
+ "copy": "Copia",
+ "appearance": "Aspetto",
+ "appearance_description": "Passa tra i temi chiaro e scuro in qualsiasi momento.",
+ "light_theme": "Tema Chiaro",
+ "dark_theme": "Tema Scuro",
+ "live_preview": "L'anteprima si aggiorna istantaneamente.",
+ "realtime": "Tempo Reale",
+ "transport_mode": "Modalità Trasporto",
+ "transport_description": "Inoltra percorsi e traffico per i peer vicini.",
+ "enable_transport_mode": "Abilita Modalità Trasporto",
+ "transport_toggle_description": "Inoltra annunci, rispondi alle richieste di percorso e aiuta la tua mesh a rimanere online.",
+ "requires_restart": "Richiede il riavvio dopo la modifica.",
+ "show_community_interfaces": "Mostra Interfacce della Comunità",
+ "community_interfaces_description": "Mostra i preset mantenuti dalla comunità quando aggiungi nuove interfacce.",
+ "reliability": "Affidabilità",
+ "messages_description": "Configura come MeshChat gestisce i fallimenti di consegna dei messaggi. Controlla il comportamento dei tentativi automatici, la ritrasmissione degli allegati e i meccanismi di fallback per garantire una consegna affidabile dei messaggi nella rete mesh.",
+ "auto_resend_title": "Invia automaticamente quando il peer annuncia",
+ "auto_resend_description": "I messaggi falliti vengono riprovati automaticamente quando la destinazione trasmette di nuovo.",
+ "retry_attachments_title": "Consenti tentativi con allegati",
+ "retry_attachments_description": "Anche i carichi utili di grandi dimensioni verranno riprovati (utile quando entrambi i peer hanno limiti elevati).",
+ "auto_fallback_title": "Fallback automatico al nodo di propagazione",
+ "auto_fallback_description": "Le consegne dirette fallite vengono messe in coda sul tuo nodo di propagazione preferito.",
+ "inbound_stamp_cost": "Costo Francobollo Messaggio in Entrata",
+ "inbound_stamp_description": "Richiedi francobolli proof-of-work per i messaggi a consegna diretta inviati a te. Valori più alti richiedono più lavoro computazionale dai mittenti. Intervallo: 1-254. Predefinito: 8.",
+ "browse_nodes": "Sfoglia Nodi",
+ "propagation_nodes_description": "Mantieni il flusso delle conversazioni anche quando i peer sono offline.",
+ "nodes_info_1": "I nodi di propagazione conservano i messaggi in modo sicuro fino a quando i destinatari non si sincronizzano di nuovo.",
+ "nodes_info_2": "I nodi si collegano tra loro per distribuire carichi utili crittografati.",
+ "nodes_info_3": "La maggior parte dei nodi conserva i dati per circa 30 giorni, poi scarta gli elementi non consegnati.",
+ "run_local_node": "Esegui un nodo di propagazione locale",
+ "run_local_node_description": "MeshChat annuncerà e manterrà un nodo usando questo hash di destinazione locale.",
+ "preferred_propagation_node": "Nodo di Propagazione Preferito",
+ "preferred_node_placeholder": "Hash di destinazione, es. a39610c89d18bb48c73e429582423c24",
+ "fallback_node_description": "I messaggi ripiegano su questo nodo ogni volta che la consegna diretta fallisce.",
+ "auto_sync_interval": "Intervallo Sincronizzazione Automatica",
+ "last_synced": "Ultima sincronizzazione {time} fa.",
+ "last_synced_never": "Ultima sincronizzazione: mai.",
+ "propagation_stamp_cost": "Costo Francobollo Nodo di Propagazione",
+ "propagation_stamp_description": "Richiedi francobolli proof-of-work per i messaggi propagati attraverso il tuo nodo. Valori più alti richiedono più lavoro computazionale. Intervallo: 13-254. Predefinito: 16. **Nota:** La modifica richiede il riavvio dell'app.",
+ "language": "Lingua",
+ "select_language": "Seleziona la tua lingua preferita.",
+ "custom_fork_by": "Fork personalizzato da",
+ "open": "Apri",
+ "identity": "Identità",
+ "lxmf_address_hash": "Hash Indirizzo LXMF",
+ "propagation_node_status": "Stato Nodo di Propagazione",
+ "last_sync": "Ultima Sincronizzazione: {time} fa",
+ "last_sync_never": "Ultima Sincronizzazione: mai",
+ "syncing": "Sincronizzazione...",
+ "syncing_node": "Sincronizzazione... ({state})",
+ "synced": "Sincronizzato",
+ "not_synced": "Non Sincronizzato",
+ "not_configured": "Non Configurato",
+ "toggle_source": "Attiva/Disattiva Codice Sorgente",
+ "audio_calls": "Telefono",
+ "calls": "Chiamate",
+ "status": "Stato",
+ "active_call": "Chiamata Attiva",
+ "incoming": "In entrata",
+ "outgoing": "In uscita",
+ "call": "Chiama",
+ "calls_plural": "Chiamate",
+ "hop": "salto",
+ "hops_plural": "salti",
+ "hung_up_waiting": "Riattaccato, in attesa di chiamata...",
+ "view_incoming_calls": "Visualizza Chiamate in Entrata",
+ "hangup_all_calls": "Riattacca Tutte le Chiamate",
+ "clear_history": "Cancella Cronologia",
+ "no_active_calls": "Nessuna chiamata attiva",
+ "incoming_call": "Chiamata in arrivo...",
+ "outgoing_call": "Chiamata in uscita...",
+ "call_active": "Attiva",
+ "call_ended": "Terminata",
+ "propagation_node": "Nodo di Propagazione",
+ "sync_now": "Sincronizza Ora",
+ "setting_auto_saved": "Impostazione {label} salvata automaticamente",
+ "backup_max_count": "Limite backup automatici",
+ "message_font_size": "Dimensione carattere messaggi",
+ "message_icon_size": "Dimensione icona",
+ "search_settings": "Cerca impostazioni...",
+ "auto_resend": "Invio Automatico",
+ "retry_attachments": "Riprova Allegati",
+ "auto_fallback": "Fallback Automatico",
+ "community_interfaces": "Interfacce Comunità",
+ "preferred_node": "Nodo Preferito",
+ "local_node": "Nodo Locale",
+ "auto_sync": "Sincronizzazione Automatica",
+ "inbound_stamp_cost_label": "Costo Francobollo in Entrata",
+ "propagation_stamp_cost_label": "Costo Francobollo Propagazione",
+ "page_archiver": "Archiviatore Pagine",
+ "smart_crawler": "Smart Crawler",
+ "authentication": "Autenticazione",
+ "banishment": "Esilio",
+ "banishment_description": "Personalizza l'effetto visivo mostrato per i peer e i nodi esiliati.",
+ "banished_effect_enabled": "Abilita Effetto Esilio",
+ "banished_effect_description": "Mostra una sovrapposizione visiva sui peer e sui nodi esiliati.",
+ "banished_text_label": "Testo Esilio",
+ "banished_text_description": "Messaggio personalizzato da visualizzare sulla sovrapposizione.",
+ "banished_color_label": "Colore Esilio",
+ "banished_color_description": "Il colore usato per l'effetto esilio.",
+ "desktop_open_calls_in_separate_window": "Apri Chiamate in 2ª Finestra",
+ "desktop_open_calls_in_separate_window_description": "Quando una chiamata è attiva, verrà mostrata in una finestra popup separata invece che all'interno dell'app.",
+ "desktop_hardware_acceleration_enabled": "Accelerazione Hardware",
+ "desktop_hardware_acceleration_enabled_description": "Disabilita se riscontri sfarfallio dell'interfaccia utente, schermi neri o glitch grafici.",
+ "translator": "Traduttore",
+ "translator_enabled": "Abilita Traduttore",
+ "translator_description": "Abilita le funzioni di traduzione nelle conversazioni.",
+ "libretranslate_url": "URL LibreTranslate",
+ "libretranslate_url_description": "L'URL dove l'API LibreTranslate è accessibile.",
+ "system": "Sistema",
+ "reticulum_stack": "Stack Reticulum",
+ "reticulum_stack_description": "Gestisci lo stack di rete Reticulum sottostante.",
+ "reload_rns": "Ricarica RNS",
+ "reload_rns_description": "Deregistra tutte le destinazioni, ferma l'istanza RNS corrente e ricaricala. Utile per applicare modifiche alla configurazione o riavviare lo stack di rete mesh senza riavviare l'intera applicazione.",
+ "reloading_rns": "Ricaricando RNS...",
+ "reloaded_rns": "Reticulum ricaricato con successo",
+ "announce_interval": "Intervallo Annuncio",
+ "stop_sync_confirm": "Sei sicuro di voler interrompere la sincronizzazione?",
+ "sync_error_generic": "Qualcosa è andato storto. Riprova più tardi.",
+ "sync_complete": "Sincronizzazione completata. {count} messaggi ricevuti.",
+ "sync_error": "Errore sincronizzazione: {status}",
+ "switching_identity": "Cambiando Identità...",
+ "loading_identity": "Caricamento della tua identità",
+ "emergency_mode_active": "Modalità Emergenza Attiva - Utilizzo del database in memoria e servizi limitati.",
+ "blackhole_integration_enabled": "Integrazione Blackhole",
+ "blackhole_integration_description": "Metti automaticamente in blackhole le identità a livello di trasporto Reticulum quando esili gli utenti in MeshChatX.",
+ "csp_settings": "Content Security Policy (CSP)",
+ "csp_description": "Aggiungi manualmente domini e sorgenti consentiti per vari tipi di risorse. Utile per server di tile personalizzati, bot o integrazioni esterne.",
+ "csp_extra_connect_src": "Sorgenti di Connessione Extra",
+ "csp_extra_connect_src_description": "Sorgenti aggiuntive per connessioni fetch/websocket (es. https://api.example.com).",
+ "csp_extra_img_src": "Sorgenti Immagine Extra",
+ "csp_extra_img_src_description": "Sorgenti aggiuntive per immagini e tile.",
+ "csp_extra_frame_src": "Sorgenti Frame Extra",
+ "csp_extra_frame_src_description": "Sorgenti aggiuntive per iframe.",
+ "csp_extra_script_src": "Sorgenti Script Extra",
+ "csp_extra_script_src_description": "Sorgenti aggiuntive per script (solo per uso avanzato).",
+ "csp_extra_style_src": "Sorgenti Stile Extra",
+ "csp_extra_style_src_description": "Sorgenti aggiuntive per fogli di stile.",
+ "location": "Posizione",
+ "location_source": "Sorgente posizione",
+ "location_source_browser": "Automatica (Browser)",
+ "location_source_manual": "Manuale",
+ "location_source_browser_desc": "Utilizza l'API di geolocalizzazione del browser. Nota: nell'app desktop, potrebbe utilizzare i servizi Google.",
+ "location_source_manual_desc": "Usa coordinate inserite manualmente per la massima privacy.",
+ "location_manual_lat": "Latitudine",
+ "location_manual_lon": "Longitudine",
+ "location_manual_alt": "Altitudine (m)",
+ "telemetry_enabled": "Telemetria abilitata",
+ "telemetry_description": "Consenti a MeshChatX di inviare e ricevere dati telemetrici. Ciò include la risposta alle richieste di posizione da parte di peer fidati.",
+ "telemetry_trusted_peers": "Peer Telemetrici Fidati",
+ "telemetry_no_trusted_peers": "Nessun peer fidato configurato. Fidati dei peer dal menu della chat per consentire loro di richiedere la tua posizione.",
+ "telemetry_revoke_trust": "Revoca Fiducia",
+ "telemetry_trust_revoked": "Fiducia telemetrica revocata per {name}",
+ "telemetry_trust_granted_alert": "Il peer è ora considerato fidato per la telemetria.",
+ "telemetry_trust_revoked_alert": "Fiducia telemetrica revocata.",
+ "telemetry_trust_failed": "Impossibile aggiornare la fiducia telemetrica.",
+ "telemetry_trust_revoke": "Revoca Fiducia Telemetrica",
+ "telemetry_trust_grant": "Fidati per la Telemetria",
+ "location_manage_desc": "Gestisci come viene condivisa la tua posizione."
+ },
+ "common": {
+ "open": "Apri",
+ "close": "Chiudi",
+ "cancel": "Annulla",
+ "save": "Salva",
+ "block": "Esilia",
+ "delete": "Elimina",
+ "edit": "Modifica",
+ "add": "Aggiungi",
+ "sync": "Sincronizza",
+ "restart_app": "Riavvia App",
+ "reveal": "Rivela",
+ "refresh": "Aggiorna",
+ "copy": "Copia",
+ "copy_to_clipboard": "Copia negli appunti",
+ "vacuum": "Vacuum",
+ "auto_recover": "Recupero Automatico",
+ "shutdown": "Spegni",
+ "acknowledge_reset": "Conferma e Reimposta",
+ "continue": "Continua",
+ "confirm": "Conferma",
+ "delete_confirm": "Sei sicuro di voler eliminare questo elemento? L'azione non può essere annullata.",
+ "search": "Cerca strumenti...",
+ "no_results": "Nessuno strumento trovato",
+ "error": "Errore",
+ "success": "Successo",
+ "warning": "Avviso",
+ "info": "Info",
+ "copied": "Copiato negli appunti",
+ "failed_to_copy": "Impossibile copiare negli appunti",
+ "save_failed": "Impossibile salvare la configurazione!",
+ "invalid_address": "Indirizzo Non Valido",
+ "loading": "Caricamento...",
+ "ok": "OK"
+ },
+ "maintenance": {
+ "title": "Manutenzione e Dati",
+ "description": "Gestisci i tuoi dati locali, svuota le cache e fai il backup delle conversazioni.",
+ "clear_messages": "Cancella Tutti i Messaggi",
+ "clear_messages_desc": "Elimina permanentemente tutti i messaggi inviati e ricevuti.",
+ "clear_announces": "Cancella Tutti gli Annunci",
+ "clear_announces_desc": "Rimuovi tutti i peer e i nodi scoperti dalla tua cache.",
+ "clear_nomadnet_favs": "Cancella Preferiti NomadNetwork",
+ "clear_nomadnet_favs_desc": "Rimuovi tutti i nodi NomadNetwork salvati dai tuoi preferiti.",
+ "clear_lxmf_icons": "Cancella Icone LXMF",
+ "clear_lxmf_icons_desc": "Rimuovi le icone utente LXMF memorizzate sul tuo dispositivo.",
+ "clear_archives": "Cancella Archivi Pagine",
+ "clear_archives_desc": "Elimina tutte le pagine NomadNetwork memorizzate.",
+ "clear_confirm": "Sei sicuro? Questa azione non può essere annullata.",
+ "messages_cleared": "Messaggi cancellati con successo",
+ "announces_cleared": "Annunci cancellati con successo",
+ "favourites_cleared": "Preferiti cancellati con successo",
+ "lxmf_icons_cleared": "Icone LXMF cancellate con successo",
+ "archives_cleared": "Archivi cancellati con successo",
+ "import_success": "Importati con successo {count} messaggi",
+ "import_failed": "Impossibile importare i messaggi"
+ },
+ "identities": {
+ "title": "Identità",
+ "manage": "Gestisci e passa tra più identità Reticulum.",
+ "new_identity": "Nuova Identità",
+ "generate_fresh": "Genera una nuova identità Reticulum.",
+ "display_name": "Nome Visualizzato",
+ "display_name_hint": "es. Agente Segreto",
+ "current": "Corrente",
+ "switch": "Passa a questa identità",
+ "delete": "Elimina identità",
+ "no_identities": "Nessuna identità trovata",
+ "create_first": "Crea una nuova identità per iniziare.",
+ "switch_confirm": "Passare all'identità \"{name}\"? L'applicazione dovrà essere riavviata.",
+ "delete_confirm": "Sei sicuro di voler eliminare l'identità \"{name}\"? L'azione non può essere annullata.",
+ "switched": "Identità cambiata. L'applicazione si riavvierà ora per applicare le modifiche.",
+ "created": "Identità creata con successo",
+ "deleted": "Identità eliminata",
+ "failed_load": "Impossibile caricare le identità",
+ "enter_display_name_warning": "Inserisci un nome visualizzato",
+ "failed_create": "Impossibile creare l'identità",
+ "switch_scheduled": "Cambio programmato. Ricaricando l'applicazione...",
+ "failed_switch": "Impossibile cambiare identità",
+ "failed_delete": "Impossibile eliminare l'identità"
+ },
+ "about": {
+ "title": "Informazioni",
+ "version": "v{version}",
+ "rns_version": "RNS {version}",
+ "lxmf_version": "LXMF {version}",
+ "python_version": "Python {version}",
+ "config_path": "Percorso config",
+ "database_path": "Percorso database",
+ "database_size": "Dimensione database",
+ "database_health": "Salute Database",
+ "database_health_description": "Controllo rapido, ottimizzazione WAL e strumenti di recupero per il database MeshChatX.",
+ "running_checks": "Esecuzione controlli...",
+ "integrity": "Integrità",
+ "journal_mode": "Modalità journal",
+ "wal_autocheckpoint": "Autocheckpoint WAL",
+ "page_size": "Dimensione pagina",
+ "pages_free": "Pagine / Libere",
+ "free_space_estimate": "Spazio libero stimato",
+ "system_resources": "Risorse di Sistema",
+ "live": "Live",
+ "memory_rss": "Memoria (RSS)",
+ "virtual_memory": "Memoria Virtuale",
+ "network_stats": "Statistiche di Rete",
+ "sent": "Inviati",
+ "received": "Ricevuti",
+ "packets_sent": "Pacchetti Inviati",
+ "packets_received": "Pacchetti Ricevuti",
+ "reticulum_stats": "Statistiche Reticulum",
+ "total_paths": "Percorsi Totali",
+ "announces_per_second": "Annunci / sec",
+ "announces_per_minute": "Annunci / min",
+ "announces_per_hour": "Annunci / ora",
+ "download_activity": "Attività di Download",
+ "no_downloads_yet": "Ancora nessun download",
+ "runtime_status": "Stato Runtime",
+ "shared_instance": "Istanza Condivisa",
+ "standalone_instance": "Istanza Standalone",
+ "transport_enabled": "Trasporto Abilitato",
+ "transport_disabled": "Trasporto Disabilitato",
+ "identity_addresses": "Identità e Indirizzi",
+ "telephone_address": "Indirizzo Telefono",
+ "security_integrity": "Integrità di Sicurezza",
+ "security_integrity_description": "Stato di verifica del sistema per il backend e i file dei dati",
+ "secured": "Protetto",
+ "tampering_detected": "Manomissione Rilevata",
+ "technical_issues": "Problemi Tecnici:",
+ "integrity_backend_error": "Il binario del backend dell'applicazione (estratto da ASAR) sembra essere stato modificato o sostituito. Questo potrebbe indicare un attore malevolo che tenta di compromettere la tua comunicazione mesh.",
+ "integrity_data_error": "Le tue identità o i file del database sembrano essere stati modificati mentre l'app era chiusa.",
+ "integrity_warning_footer": "Procedi con cautela. Se non hai aggiornato o modificato manualmente questi file, la tua installazione potrebbe essere compromessa.",
+ "no_integrity_violations": "Nessuna violazione di integrità rilevata dall'ultimo avvio.",
+ "dependency_chain": "Catena di Dipendenze",
+ "other_core_components": "Altri Componenti Core",
+ "backend_dependencies": "Dipendenze Backend",
+ "delete_snapshot_confirm": "Sei sicuro di voler eliminare questo snapshot?",
+ "snapshot_deleted": "Snapshot eliminato",
+ "failed_delete_snapshot": "Impossibile eliminare lo snapshot",
+ "delete_backup_confirm": "Sei sicuro di voler eliminare questo backup?",
+ "backup_deleted": "Backup eliminato",
+ "failed_delete_backup": "Impossibile eliminare il backup",
+ "database_restored": "Database ripristinato. Riavvio...",
+ "failed_restore_snapshot": "Impossibile ripristinare lo snapshot",
+ "restore_snapshot_confirm": "Sei sicuro di voler ripristinare questo snapshot? Questo sovrascriverà il database corrente e richiederà il riavvio dell'app.",
+ "integrity_acknowledged": "Problemi di integrità confermati",
+ "integrity_acknowledged_reset": "Problemi di integrità confermati e manifest reimpostato",
+ "integrity_acknowledge_confirm": "Sei sicuro di voler confermare questi problemi di integrità? Questo aggiornerà il manifest di sicurezza per riflettere lo stato attuale dei tuoi file.",
+ "failed_acknowledge_integrity": "Impossibile confermare i problemi di integrità",
+ "shutdown_sent": "Comando di spegnimento inviato al server.",
+ "identity_exported": "File chiave identità esportato",
+ "identity_copied": "Chiave identità Base32 copiata negli appunti"
+ },
+ "interfaces": {
+ "title": "Interfacce",
+ "manage": "Gestisci",
+ "description": "Cerca, filtra ed esporta i tuoi adattatori Reticulum.",
+ "add_interface": "Aggiungi Interfaccia",
+ "import": "Importa",
+ "export_all": "Esporta tutto",
+ "search_placeholder": "Cerca per nome, tipo, host...",
+ "all": "Tutte",
+ "connected_only": "Solo connesse",
+ "all_types": "Tutti i tipi",
+ "no_interfaces_found": "Nessuna interfaccia trovata",
+ "no_interfaces_description": "Modifica la tua ricerca o aggiungi una nuova interfaccia.",
+ "restart_required": "Riavvio richiesto",
+ "restart_description": "Reticulum MeshChatX deve essere riavviato affinché le modifiche alle interfacce abbiano effetto.",
+ "restart_now": "Riavvia ora",
+ "failed_enable": "impossibile abilitare l'interfaccia",
+ "failed_disable": "impossibile disabilitare l'interfaccia",
+ "delete_confirm": "Sei sicuro di voler eliminare questa interfaccia? L'azione non può essere annullata!",
+ "failed_delete": "impossibile eliminare l'interfaccia",
+ "failed_export_all": "Impossibile esportare le interfacce",
+ "failed_export_single": "Impossibile esportare l'interfaccia",
+ "failed_reload": "Impossibile ricaricare Reticulum!",
+ "interface_not_found": "L'interfaccia selezionata per la modifica non è stata trovata.",
+ "discovery_settings_saved": "Impostazioni di scoperta salvate",
+ "failed_save_discovery": "Impossibile salvare le impostazioni di scoperta",
+ "no_interfaces_found_config": "Nessuna interfaccia trovata nel file di configurazione selezionato",
+ "failed_parse_config": "Impossibile analizzare il file di configurazione",
+ "select_config_file": "Seleziona un file di configurazione",
+ "select_at_least_one": "Seleziona almeno un'interfaccia da importare",
+ "import_success": "Interfacce importate con successo. MeshChat deve essere riavviato per applicare le modifiche.",
+ "failed_import_all": "Impossibile importare le interfacce"
+ },
+ "map": {
+ "title": "Mappa",
+ "description": "Mappa compatibile con l'uso offline e supporto MBTiles.",
+ "upload_mbtiles": "Carica MBTiles",
+ "select_file": "Seleziona file MBTiles",
+ "offline_mode": "Modalità Offline",
+ "online_mode": "Modalità Online",
+ "attribution": "Attribuzione",
+ "bounds": "Confini",
+ "center": "Centro",
+ "zoom": "Zoom",
+ "uploading": "Caricamento...",
+ "upload_success": "Mappa caricata con successo",
+ "upload_failed": "Impossibile caricare la mappa",
+ "no_map_loaded": "Nessuna mappa offline caricata. Carica un file .mbtiles per abilitare la modalità offline.",
+ "invalid_file": "File MBTiles non valido. Sono supportate solo le tile raster.",
+ "default_view": "Vista Predefinita",
+ "set_as_default": "Imposta come Vista Predefinita",
+ "export_area": "Esporta Area",
+ "export_instructions": "Trascina sulla mappa per selezionare un'area.",
+ "min_zoom": "Zoom Min",
+ "max_zoom": "Zoom Max",
+ "tile_count": "Tile Stimate",
+ "start_export": "Inizia Esportazione",
+ "exporting": "Esportazione Mappa...",
+ "download_ready": "Esportazione Completata",
+ "download_now": "Scarica MBTiles",
+ "caching_enabled": "Caching Tile",
+ "clear_cache": "Svuota Cache",
+ "cache_cleared": "Cache tile svuotata",
+ "tile_server_url": "URL Server Tile",
+ "tile_server_url_placeholder": "https://tile.openstreetmap.org/{z}/{x}/{y}.png",
+ "tile_server_url_hint": "Usa {z}, {x}, {y} per zoom, colonna, riga",
+ "tile_server_saved": "URL server tile salvato",
+ "tile_server_openstreetmap": "OpenStreetMap",
+ "nominatim_api_url": "URL API Nominatim",
+ "nominatim_api_url_placeholder": "https://nominatim.openstreetmap.org",
+ "nominatim_api_url_hint": "URL di base per il servizio di geocodifica Nominatim",
+ "nominatim_api_saved": "URL API Nominatim salvato",
+ "search_placeholder": "Cerca una posizione...",
+ "search_offline_error": "La ricerca è disponibile solo in modalità online",
+ "search_connection_error": "Impossibile connettersi al servizio di ricerca. Controlla la tua connessione internet.",
+ "search_error": "Errore di ricerca",
+ "search_no_results": "Nessun risultato trovato",
+ "custom_tile_server_unavailable": "Il server tile personalizzato non è accessibile in modalità offline",
+ "custom_nominatim_unavailable": "Il server Nominatim personalizzato non è accessibile in modalità offline",
+ "onboarding_title": "Esporta in MBTiles!",
+ "onboarding_text": "Usa lo strumento di esportazione per scaricare aree della mappa come file MBTiles per l'uso offline.",
+ "onboarding_got_it": "Ho capito",
+ "tool_point": "Disegna Punto",
+ "tool_linestring": "Disegna Linea",
+ "tool_polygon": "Disegna Poligono",
+ "tool_circle": "Disegna Cerchio",
+ "tool_measure": "Misura Distanza/Area",
+ "tool_clear": "Cancella Disegni",
+ "save_drawing": "Salva Livello Disegno",
+ "load_drawing": "Carica Livello Disegno",
+ "save_drawing_title": "Salva Livello Disegno",
+ "save_drawing_desc": "Salva le tue annotazioni attuali sulla mappa nel database.",
+ "drawing_name": "Nome Livello",
+ "drawing_name_placeholder": "es. Area Target Alpha",
+ "load_drawing_title": "Carica Livello Disegno",
+ "loading_drawings": "Caricamento livelli salvati...",
+ "no_drawings": "Nessun Livello Salvato",
+ "no_drawings_desc": "Non hai ancora salvato alcuna annotazione sulla mappa.",
+ "saved_on": "Salvato il",
+ "settings": "Impostazioni Mappa",
+ "go_to_my_location": "Vai alla Mia Posizione",
+ "source_updated": "Sorgente mappa aggiornata",
+ "failed_set_active": "Impossibile impostare la mappa attiva",
+ "file_deleted": "File eliminato",
+ "failed_delete_file": "Impossibile eliminare il file",
+ "storage_saved": "Directory di archiviazione salvata",
+ "failed_save_storage": "Impossibile salvare la directory",
+ "export_cancelled": "Esportazione annullata",
+ "failed_cancel_export": "Impossibile annullare l'esportazione",
+ "failed_start_export": "Impossibile avviare l'esportazione",
+ "select_mbtiles_error": "Seleziona un file .mbtiles",
+ "view_saved": "Vista predefinita salvata",
+ "failed_save_view": "Impossibile salvare la vista predefinita",
+ "failed_clear_cache": "Impossibile svuotare la cache",
+ "failed_save_tile_server": "Impossibile salvare l'URL del server tile",
+ "failed_save_nominatim": "Impossibile salvare l'URL dell'API Nominatim",
+ "copied_coordinates": "Coordinate copiate",
+ "failed_load_drawings": "Impossibile caricare i disegni",
+ "not_initialized": "Mappa non inizializzata",
+ "drawing_saved": "Disegno salvato",
+ "failed_save_drawing": "Impossibile salvare il disegno",
+ "deleted": "Eliminato",
+ "failed_delete": "Impossibile eliminare",
+ "location_not_determined": "Impossibile determinare la tua posizione",
+ "geolocation_not_supported": "La geolocalizzazione non è supportata dal tuo browser",
+ "no_nodes_location": "Nessun nodo scoperto con posizione trovata",
+ "failed_fetch_nodes": "Impossibile recuperare i nodi scoperti per la mappatura"
+ },
+ "interface": {
+ "disable": "Disabilita",
+ "enable": "Abilita",
+ "edit_interface": "Modifica Interfaccia",
+ "export_interface": "Esporta Interfaccia",
+ "delete_interface": "Elimina Interfaccia",
+ "listen": "Ascolta",
+ "forward": "Inoltra",
+ "port": "Porta",
+ "frequency": "Frequenza",
+ "bandwidth": "Larghezza di banda",
+ "txpower": "Potenza TX",
+ "spreading_factor": "SF",
+ "coding_rate": "Coding Rate",
+ "bitrate": "Bitrate",
+ "tx": "TX",
+ "rx": "RX",
+ "noise": "Rumore",
+ "clients": "Client"
+ },
+ "messages": {
+ "title": "Messaggi",
+ "conversations": "Conversazioni",
+ "announces": "Annunci",
+ "search_placeholder": "Cerca in {count} conversazioni...",
+ "unread": "Non letti",
+ "failed": "Falliti",
+ "attachments": "Allegati",
+ "no_messages_yet": "Ancora nessun messaggio",
+ "loading_conversations": "Caricamento conversazioni...",
+ "no_conversations": "Nessuna Conversazione",
+ "discover_peers": "Scopri i peer nella scheda Annunci",
+ "no_search_results": "Nessun Risultato Trovato",
+ "try_another_search": "Prova un termine di ricerca diverso",
+ "no_search_results_conversations": "La tua ricerca non corrisponde ad alcuna conversazione.",
+ "search_placeholder_announces": "Cerca in {count} annunci recenti...",
+ "no_peers_discovered": "Nessun Peer Scoperto",
+ "waiting_for_announce": "In attesa che qualcuno annunci!",
+ "no_search_results_peers": "La tua ricerca non corrisponde ad alcun Peer!",
+ "direct": "Diretto",
+ "downloading": "Scaricamento",
+ "hops": "{count} salti",
+ "hops_away": "{count} salti di distanza",
+ "snr": "SNR {snr}",
+ "stamp_cost": "Costo Francobollo {cost}",
+ "pop_out_chat": "Estrai chat",
+ "custom_display_name": "Nome Visualizzato Personalizzato",
+ "send_placeholder": "Scrivi un messaggio...",
+ "no_messages_in_conversation": "Ancora nessun messaggio in questa conversazione.",
+ "say_hello": "Di' ciao!",
+ "no_active_chat": "Nessuna Chat Attiva",
+ "select_peer_or_enter_address": "Seleziona un peer dalla barra laterale o inserisci un indirizzo qui sotto",
+ "add_files": "Aggiungi File",
+ "paste_from_clipboard": "Incolla dagli Appunti",
+ "location": "Posizione",
+ "share_location": "Condividi Posizione",
+ "request_location": "Richiedi Posizione",
+ "view_on_map": "Visualizza sulla Mappa",
+ "request": "Richiesta",
+ "generate_paper_message": "Genera Messaggio Cartaceo (LXM)",
+ "recording": "Registrazione: {duration}",
+ "nomad_network_node": "Nodo Nomad Network",
+ "toggle_source": "Attiva/Disattiva Codice Sorgente",
+ "folder_created": "Cartella creata",
+ "failed_create_folder": "Impossibile creare la cartella",
+ "folder_renamed": "Cartella rinominata",
+ "failed_rename_folder": "Impossibile rinominare la cartella",
+ "folder_deleted": "Cartella eliminata",
+ "failed_delete_folder": "Impossibile eliminare la cartella",
+ "moved_to_folder": "Spostato nella cartella",
+ "failed_move_folder": "Impossibile spostare nella cartella",
+ "marked_read": "Segnato come letto",
+ "failed_mark_read": "Impossibile segnare come letto",
+ "conversations_deleted": "Conversazioni eliminate",
+ "failed_delete_conversations": "Impossibile eliminare le conversazioni",
+ "failed_export_folders": "Impossibile esportare le cartelle",
+ "folders_imported": "Cartelle importate",
+ "failed_import_folders": "Impossibile importare le cartelle",
+ "failed_read_clipboard": "Impossibile leggere dagli appunti",
+ "failed_send_ingest": "Impossibile inviare la richiesta di ingest",
+ "address_copied": "Il tuo indirizzo LXMF è stato copiato negli appunti",
+ "hash_copied": "Hash identità copiato negli appunti",
+ "failed_to_copy_hash": "Impossibile copiare l'hash identità",
+ "failed_copy_address": "Impossibile copiare l'indirizzo",
+ "translation_failed": "Traduzione fallita",
+ "failed_add_contact": "Impossibile aggiungere il contatto",
+ "ingesting_paper_message": "Ingesting messaggio cartaceo...",
+ "failed_ingest_paper": "Impossibile ingerire il messaggio cartaceo",
+ "enter_display_name": "Inserisci un nome visualizzato personalizzato",
+ "failed_update_display_name": "Impossibile aggiornare il nome visualizzato",
+ "failed_load_audio": "Impossibile caricare l'allegato audio.",
+ "no_contacts_telephone": "Nessun contatto trovato nel telefono",
+ "failed_load_contacts": "Impossibile caricare i contatti",
+ "location_request_sent": "Richiesta di posizione inviata",
+ "failed_send_location_request": "Impossibile inviare la richiesta di posizione",
+ "fetching_location": "Recupero della posizione...",
+ "location_sent": "Posizione condivisa con successo",
+ "location_requested": "Posizione richiesta",
+ "remove_image_confirm": "Sei sicuro di voler rimuovere questo allegato immagine?",
+ "failed_start_recording": "impossibile avviare la registrazione",
+ "remove_audio_confirm": "Sei sicuro di voler rimuovere questo allegato audio?",
+ "failed_generate_qr": "Impossibile generare il QR",
+ "enter_folder_name": "Inserisci il nome della cartella",
+ "new_folder": "Nuova Cartella",
+ "rename_folder": "Rinomina cartella",
+ "failed_render_qr": "Impossibile renderizzare il codice QR",
+ "uri_copied": "URI copiato negli appunti",
+ "failed_copy_uri": "Impossibile copiare l'URI",
+ "paper_message_sent": "Messaggio cartaceo inviato con successo",
+ "failed_send_paper": "Impossibile inviare il messaggio cartaceo",
+ "failed_load_config": "Impossibile caricare la configurazione",
+ "profile_icon_saved": "Icona del profilo salvata con successo",
+ "failed_save_profile_icon": "Impossibile salvare l'icona del profilo",
+ "select_colors_warning": "Seleziona sia il colore di sfondo che quello dell'icona",
+ "select_icon_warning": "Seleziona un'icona",
+ "changes_reset": "Modifiche reimpostate ai valori salvati",
+ "profile_icon_removed": "Icona del profilo rimossa con successo",
+ "user_banished": "Utente esiliato con successo",
+ "failed_banish_user": "Impossibile esiliare l'utente",
+ "delete_conversation_confirm": "Sei sicuro di voler eliminare questa conversazione?",
+ "failed_delete_conversation": "impossibile eliminare la conversazione",
+ "delete_history_confirm": "Sei sicuro di voler eliminare tutti i messaggi in questa conversazione? L'azione non può essere annullata!",
+ "failed_delete_history": "impossibile eliminare la cronologia",
+ "invalid_destination_hash": "Hash di destinazione non valido",
+ "invalid_destination_hash_format": "Formato hash di destinazione non valido",
+ "ping_failed": "Ping fallito. Riprova più tardi",
+ "ping_reply_from": "Risposta valida da {hash}",
+ "duration": "Durata: {duration}",
+ "hops_there": "Salti Andata: {count}",
+ "hops_back": "Salti Ritorno: {count}",
+ "signal_quality": "Qualità Segnale: {quality}%",
+ "rssi_val": "RSSI: {rssi}dBm",
+ "snr_val": "SNR: {snr}dB"
+ },
+ "settings": {
+ "shortcut_saved": "Scorciatoia salvata",
+ "shortcut_deleted": "Scorciatoia eliminata",
+ "archived_pages_flushed": "Pagine archiviate svuotate.",
+ "failed_enable_transport": "Impossibile abilitare la modalità trasporto!",
+ "failed_disable_transport": "Impossibile disabilitare la modalità trasporto!",
+ "failed_reload_reticulum": "Impossibile ricaricare Reticulum!",
+ "folders_exported": "Cartelle esportate",
+ "failed_export_folders": "Impossibile esportare le cartelle",
+ "folders_imported": "Cartelle e mappature importate con successo",
+ "failed_import_folders": "Impossibile importare le cartelle"
+ },
+ "debug": {
+ "title": "Log di Debug",
+ "description": "Visualizza i log dell'applicazione e le anomalie rilevate.",
+ "failed_fetch_logs": "Impossibile recuperare i log",
+ "logs_copied": "I log in questa pagina sono stati copiati negli appunti",
+ "failed_copy_logs": "Impossibile copiare i log"
+ },
+ "visualiser": {
+ "title": "Visualizzatore di Rete",
+ "description": "Visualizza la topologia della rete mesh.",
+ "reticulum_mesh": "Reticulum Mesh",
+ "network_visualizer": "Visualizzatore di Rete",
+ "node_info": "Info Nodo",
+ "hash": "Hash",
+ "hops": "Salti",
+ "interface": "Interfaccia",
+ "rssi": "RSSI",
+ "snr": "SNR",
+ "first_seen": "Visto per la prima volta",
+ "last_seen": "Visto l'ultima volta",
+ "center_node": "Centra sul nodo",
+ "copy_hash": "Copia Hash",
+ "banish_identity": "Esilia identità",
+ "banished_identities": "Identità esiliate",
+ "filter_nodes": "Filtra nodi...",
+ "all": "Tutti",
+ "direct": "Diretto",
+ "one_hop": "1 Salto",
+ "multi_hops": "2+ Salti",
+ "clear": "Cancella",
+ "show_labels": "Mostra tutte le etichette",
+ "bouncing_balls": "Modalità palle rimbalzanti",
+ "orbit_mode": "Modalità orbita",
+ "show_edges": "Mostra bordi",
+ "show_tooltips": "Mostra tooltip",
+ "show_rssi": "Mostra RSSI",
+ "show_snr": "Mostra SNR",
+ "show_hops": "Mostra Salti",
+ "physics": "Fisica",
+ "gravity": "Gravità",
+ "spring_length": "Lunghezza molla",
+ "spring_strength": "Forza molla",
+ "damping": "Smorzamento",
+ "central_gravity": "Gravità centrale",
+ "edge_strength": "Forza bordo",
+ "force_atlas_2": "Force Atlas 2",
+ "barns_hut": "Barns Hut",
+ "repulsion": "Repulsione",
+ "reset_physics": "Reimposta fisica",
+ "reset_camera": "Reimposta Telecamera",
+ "clear_graph": "Cancella grafico",
+ "total_nodes": "Nodi totali",
+ "total_edges": "Bordi totali",
+ "discovered": "Scoperti",
+ "wait_between_batches": "Attesa tra i batch",
+ "batch": "Batch",
+ "loading_status": "Stato caricamento",
+ "failed_load": "Impossibile caricare i dati di rete"
+ },
+ "banishment": {
+ "title": "Esiliati",
+ "description": "Gestisci gli utenti e i nodi esiliati",
+ "failed_load_banished": "Impossibile caricare le destinazioni esiliate",
+ "search_placeholder": "Cerca per hash o nome visualizzato...",
+ "loading_items": "Caricamento elementi esiliati...",
+ "no_items": "Nessun elemento esiliato trovato",
+ "lift_banishment": "Revoca Esilio",
+ "lift_banishment_confirm": "Sei sicuro di voler revocare l'esilio per {name}?",
+ "banished_at": "Esiliato il",
+ "banished_until": "Esiliato fino al",
+ "reason": "Motivo",
+ "type": "Tipo",
+ "user": "Utente",
+ "node": "Nodo",
+ "banishment_lifted": "Esilio revocato con successo",
+ "failed_lift_banishment": "Impossibile revocare l'esilio"
+ },
+ "nomadnet": {
+ "remove_favourite": "Rimuovi dai Preferiti",
+ "add_favourite": "Aggiungi ai Preferiti",
+ "page_archives": "Archivi Pagine",
+ "archive_current_version": "Archivia Versione Corrente",
+ "no_archives_for_this_page": "Nessun archivio per questa pagina",
+ "viewing_archived_version_from": "Visualizzazione versione archiviata del {time}",
+ "viewing_archived_version": "Visualizzazione versione archiviata",
+ "load_live": "Carica Live",
+ "failed_to_load_page": "Impossibile caricare la pagina",
+ "archived_version_available": "È disponibile una versione archiviata di questa pagina.",
+ "view_archive": "Visualizza Archivio",
+ "no_active_node": "Nessun Nodo Attivo",
+ "select_node_to_browse": "Seleziona un Nodo per iniziare a navigare!",
+ "open_nomadnet_url": "Apri un URL Nomadnet",
+ "unknown_node": "Nodo Sconosciuto",
+ "existing_download_in_progress": "Un download è già in corso. Attendi che finisca prima di iniziarne un altro.",
+ "favourites": "Preferiti",
+ "announces": "Annunci",
+ "search_favourites_placeholder": "Cerca in {count} preferiti...",
+ "search_placeholder_announces": "Cerca in {count} annunci recenti...",
+ "rename": "Rinomina",
+ "remove": "Rimuovi",
+ "no_favourites": "Nessun preferito",
+ "add_nodes_from_announces": "Aggiungi nodi dalla scheda annunci.",
+ "search_announces": "Cerca annunci",
+ "announced_time_ago": "Annunciato {time} fa",
+ "block_node": "Esilia Nodo",
+ "no_announces_yet": "Ancora nessun annuncio",
+ "no_search_results_peers": "Nessun peer trovato corrispondente alla tua ricerca.",
+ "listening_for_peers": "Ascolto dei peer sulla mesh.",
+ "block_node_confirm": "Sei sicuro di voler esiliare {name}? I suoi annunci verranno ignorati e non apparirà nel flusso degli annunci.",
+ "node_blocked_successfully": "Nodo esiliato con successo",
+ "failed_to_block_node": "Impossibile esiliare il nodo",
+ "failed_rename_favourite": "Impossibile rinominare il preferito",
+ "rename_favourite": "Rinomina questo preferito",
+ "remove_favourite_confirm": "Sei sicuro di voler rimuovere questo preferito?",
+ "enter_nomadnet_url": "Inserisci un URL Nomadnet",
+ "archiving_page": "Archiviazione pagina...",
+ "page_archived_successfully": "Pagina archiviata con successo.",
+ "identify_confirm": "Sei sicuro di volerti identificare su questo nodo NomadNetwork? La pagina si ricaricherà dopo l'invio della tua identità.",
+ "banishment_lifted": "Esilio revocato con successo",
+ "failed_lift_banishment": "Impossibile revocare l'esilio",
+ "enter_section_name": "Inserisci il nome della sezione",
+ "new_section": "Nuova Sezione",
+ "rename_section": "Rinomina sezione",
+ "delete_section_confirm": "Eliminare questa sezione? I preferiti verranno spostati nella sezione principale.",
+ "unsupported_url": "url non supportato: "
+ },
+ "forwarder": {
+ "title": "Inoltro LXMF",
+ "description": "Inoltra i messaggi da un indirizzo a un altro, con instradamento di ritorno trasparente.",
+ "add_rule": "Aggiungi Regola di Inoltro",
+ "name": "Nome",
+ "name_placeholder": "Nome regola (es. Nodo Casa)...",
+ "forward_to_hash": "Inoltra all'Hash",
+ "destination_placeholder": "Hash LXMF di destinazione...",
+ "source_filter": "Filtro Sorgente (Opzionale)",
+ "source_filter_placeholder": "Inoltra solo da questo hash...",
+ "add_button": "Aggiungi Regola",
+ "active_rules": "Regole Attive",
+ "no_rules": "Nessuna regola di inoltro configurata.",
+ "active": "Attiva",
+ "disabled": "Disabilitata",
+ "forwarding_to": "Inoltro a: {hash}",
+ "source_filter_display": "Filtro sorgente: {hash}",
+ "delete_confirm": "Sei sicuro di voler eliminare questa regola?"
+ },
+ "archives": {
+ "description": "Cerca e visualizza le pagine Nomad Network archiviate",
+ "search_placeholder": "Cerca contenuto, hash o percorso...",
+ "loading": "Caricamento archivi...",
+ "no_archives_found": "Nessun archivio trovato",
+ "adjust_filters": "Prova a regolare i tuoi filtri di ricerca.",
+ "browse_to_archive": "Le pagine archiviate appariranno qui una volta che avrai visitato i siti Nomad Network.",
+ "page": "Pagina",
+ "pages": "Pagine",
+ "view": "Visualizza",
+ "showing_range": "Visualizzazione da {start} a {end} di {total} archivi",
+ "page_of": "Pagina {page} di {total_pages}"
+ },
+ "docs": {
+ "title": "Documentazione",
+ "subtitle": "Manuali e guide Reticulum.",
+ "status_title": "Stato Documentazione",
+ "status_downloading": "Scaricamento...",
+ "status_available": "Manuale Offline Disponibile",
+ "status_not_downloaded": "Non Scaricato",
+ "btn_download": "Scarica Manuali",
+ "btn_update": "Aggiorna Manuale",
+ "error": "Errore",
+ "failed_update_docs": "Impossibile aggiornare le sorgenti della documentazione",
+ "docs_link_copied": "Link alla documentazione copiato negli appunti",
+ "failed_copy_link": "Impossibile copiare il link"
+ },
+ "tools": {
+ "utilities": "Utilità",
+ "power_tools": "Strumenti avanzati per operatori",
+ "diagnostics_description": "Gli strumenti di diagnostica e gli assistenti firmware sono inclusi in MeshChat per consentirti di risolvere i problemi dei peer senza lasciare la console.",
+ "ping": {
+ "title": "Ping",
+ "description": "Test di latenza per qualsiasi destinazione LXMF con stato in tempo reale."
+ },
+ "rnprobe": {
+ "title": "RNProbe",
+ "description": "Sonda le destinazioni con dimensioni dei pacchetti personalizzate per testare la connettività."
+ },
+ "rncp": {
+ "title": "RNCP",
+ "description": "Invia e ricevi file su RNS con monitoraggio dell'avanzamento."
+ },
+ "rnstatus": {
+ "title": "RNStatus",
+ "description": "Visualizza le statistiche delle interfacce e le informazioni sullo stato della rete."
+ },
+ "rnpath": {
+ "title": "RNPath",
+ "description": "Gestisci la tabella dei percorsi, visualizza i tassi di annuncio e richiedi percorsi.",
+ "failed_fetch": "Impossibile recuperare i dati del percorso",
+ "path_dropped": "Percorso eliminato",
+ "failed_drop": "Impossibile eliminare il percorso",
+ "error_drop": "Errore durante l'eliminazione del percorso",
+ "failed_request": "Impossibile richiedere il percorso",
+ "paths_dropped": "Percorsi eliminati",
+ "failed_drop_paths": "Impossibile eliminare i percorsi",
+ "purge_confirm": "Svuotare tutte le code di annuncio? L'azione non può essere annullata.",
+ "queues_purged": "Code di annuncio svuotate",
+ "failed_purge": "Impossibile svuotare le code"
+ },
+ "rnpath_trace": {
+ "title": "RNS Path Trace",
+ "description": "Visualizza il percorso e i salti verso qualsiasi hash di destinazione sulla mesh.",
+ "destination_hash": "Hash di Destinazione",
+ "placeholder": "Inserisci hash di destinazione a 32 caratteri...",
+ "trace": "Traccia Percorso",
+ "tracing": "Tracciamento del percorso attraverso la mesh...",
+ "total_hops": "Salti Totali",
+ "interface": "Interfaccia di Uscita",
+ "next_hop": "Prossimo Salto",
+ "ready_title": "Traccia un Percorso",
+ "ready_desc": "Inserisci un hash di destinazione sopra per visualizzare come i pacchetti viaggiano attraverso la mesh per raggiungerlo.",
+ "unknown_hops": "{count} Salti Intermedi",
+ "ping_test": "Test con Ping"
+ },
+ "translator": {
+ "title": "Traduttore",
+ "description": "Traduci testo usando l'API LibreTranslate o Argos Translate locale."
+ },
+ "forwarder": {
+ "title": "Inoltro",
+ "description": "Inoltro LXMF con instradamento del percorso di ritorno."
+ },
+ "rnode_flasher": {
+ "title": "Flasher RNode",
+ "description": "Flasher e aggiornamento degli adattatori RNode senza toccare la riga di comando.",
+ "select_device": "1. Seleziona il tuo dispositivo",
+ "product": "Prodotto",
+ "model": "Modello",
+ "select_product": "Seleziona un Prodotto",
+ "select_model": "Seleziona un Modello",
+ "enter_dfu_mode": "Entra in Modalità DFU",
+ "entering_dfu_mode": "Entrata in Modalità DFU...",
+ "find_device_issue": "Non trovi il tuo dispositivo? Apri una segnalazione su",
+ "select_firmware": "2. Seleziona il firmware da flashare (.zip)",
+ "flash_now": "Flasha Ora",
+ "flashing": "Flashing: {percentage}%",
+ "flashing_file_progress": "File {current}/{total}: {percentage}%",
+ "connecting_device": "Connessione al dispositivo...",
+ "download_firmware": "Scarica Firmware",
+ "official_firmware": "Firmware Ufficiale",
+ "ce_firmware": "Firmware CE",
+ "transport_node_firmware": "Firmware Nodo di Trasporto",
+ "common_issues": "Problemi Comuni",
+ "hardware_failure": "Guasto Hardware:",
+ "provision_eeprom_hint": "Devi inizializzare la eeprom al passaggio 3.",
+ "firmware_corrupt": "Firmware Corrotto:",
+ "set_firmware_hash_hint": "Devi impostare l'hash del firmware al passaggio 4.",
+ "step_provision": "3. Inizializza EEPROM",
+ "provision_description": "Imposta info dispositivo, checksum e firma vuota",
+ "provision": "Inizializza",
+ "provisioning_wait": "Inizializzazione: attendi...",
+ "step_set_hash": "4. Imposta Hash Firmware",
+ "set_hash_description": "Usa l'hash dalla scheda",
+ "set_firmware_hash": "Imposta Hash Firmware",
+ "setting_hash_wait": "Impostazione Hash Firmware: attendi...",
+ "step_done": "5. Finalizza",
+ "download_recommended": "Scarica e Carica Firmware Consigliato",
+ "downloading": "Scaricamento...",
+ "done_description": "Se sei arrivato fin qui e tutti i passaggi precedenti sono riusciti, il tuo RNode dovrebbe essere pronto all'uso.",
+ "meshchat_usage": "Per usare RNode con MeshChat, dovrai aggiungere una RNodeInterface nella pagina Interfacce → Aggiungi Interfaccia.",
+ "sideband_usage": "Per usare RNode con Sideband, dovrai configurarlo in Hardware → RNode e abilitare Connectivity → Connect via RNode.",
+ "restart_warning": "Devi riavviare MeshChat e Sideband affinché le modifiche alle impostazioni dell'interfaccia abbiano effetto!",
+ "advanced_tools": "Strumenti Avanzati",
+ "detect_rnode": "Rileva RNode",
+ "reboot_rnode": "Riavvia RNode",
+ "read_display": "Leggi Display",
+ "dump_eeprom": "Dump EEPROM",
+ "wipe_eeprom": "Cancella EEPROM",
+ "eeprom_console_hint": "I dump della EEPROM sono mostrati nella console degli strumenti per sviluppatori.",
+ "configure_bluetooth": "Configura Bluetooth (opzionale)",
+ "bluetooth_info_1": "Il Bluetooth non è supportato su tutti i dispositivi.",
+ "bluetooth_info_2": "Alcuni dispositivi usano il Bluetooth Classico, altri il BLE (Bluetooth Low Energy)",
+ "bluetooth_info_3": "Metti l'RNode in modalità accoppiamento Bluetooth, quindi connettiti ad esso dalle impostazioni Bluetooth di Android.",
+ "bluetooth_info_4": "Una volta avviata una richiesta di accoppiamento da Android, dovrebbe apparire un PIN sul display dell'RNode.",
+ "bluetooth_info_5": "In Sideband dovrai abilitare Connect using Bluetooth in Hardware → RNode.",
+ "bluetooth_info_6": "Se il tuo dispositivo usa BLE, dovrai anche abilitare Device requires BLE in Hardware → RNode.",
+ "bluetooth_restart_warning": "Non dimenticare di riavviare Sideband affinché le impostazioni abbiano effetto!",
+ "enable": "Abilita",
+ "disable": "Disabilita",
+ "start_pairing": "Inizia Accoppiamento",
+ "configure_tnc": "Configura Modalità TNC (opzionale)",
+ "tnc_info_1": "La modalità TNC consente di utilizzare un RNode come TNC compatibile KISS sulla porta seriale.",
+ "tnc_info_2": "Questa modalità lo rende utilizzabile con software per radioamatori che possono comunicare con un TNC KISS tramite una porta seriale.",
+ "tnc_warning": "Devi lasciare disabilitata la modalità TNC quando usi RNode con app come MeshChat o Sideband.",
+ "frequency": "Frequenza (Hz)",
+ "bandwidth": "Larghezza di banda",
+ "tx_power": "Potenza Tx (dBm)",
+ "spreading_factor": "Spreading Factor",
+ "coding_rate": "Coding Rate",
+ "configure_display": "Configura Display",
+ "rotation": "Rotazione",
+ "reconditioning": "Ricondizionamento",
+ "start": "Inizia",
+ "stop": "Ferma",
+ "rotation_v180_warning": "L'impostazione della rotazione del display richiede il firmware v1.80+",
+ "errors": {
+ "failed_download": "Impossibile scaricare il firmware: {error}",
+ "firmware_not_found_in_release": "Firmware consigliato non trovato nell'ultima release.",
+ "web_serial_not_supported": "Il Web Serial non è supportato in questo browser. Usa Chrome, Edge o un altro browser basato su Chromium.",
+ "no_device_selected": "Nessun dispositivo selezionato. Seleziona una porta seriale.",
+ "failed_connect": "Connessione al dispositivo fallita: {error}",
+ "not_an_rnode": "Il dispositivo selezionato non è un RNode! Assicurati di aver selezionato la porta seriale corretta.",
+ "failed_dfu": "Impossibile entrare in modalità DFU: {error}",
+ "select_firmware_first": "Seleziona prima un file firmware (.zip).",
+ "failed_flash": "Flashing del firmware fallito: {error}",
+ "esptool_not_loaded": "impossibile caricare esptool-js. Ricarica la pagina e riprova.",
+ "no_flash_config": "La configurazione di flash non è disponibile per il dispositivo selezionato. Seleziona un altro dispositivo o controlla il file del firmware.",
+ "failed_extract": "File richiesto \"{file}\" non trovato nel file ZIP del firmware. Scarica il firmware corretto per il tuo dispositivo.",
+ "failed_detect": "Impossibile rilevare l'RNode. Assicurati che il dispositivo sia connesso e nella modalità corretta.",
+ "provisioned_already": "La eeprom è già inizializzata. Devi cancellarla per reinizializzarla!",
+ "select_product_first": "Seleziona prima un prodotto!",
+ "select_model_first": "Seleziona prima un modello!",
+ "not_provisioned": "La eeprom non è inizializzata. Devi farlo prima!",
+ "failed_provision": "inizializzazione fallita: {error}",
+ "failed_set_hash": "impossibile impostare l'hash del firmware: {error}",
+ "failed_reboot": "Impossibile riavviare l'RNode: {error}",
+ "failed_read_display": "Impossibile leggere il display: {error}",
+ "failed_dump_eeprom": "Impossibile eseguire il dump della EEPROM: {error}",
+ "failed_wipe_eeprom": "Impossibile cancellare la EEPROM: {error}",
+ "failed_enable_tnc": "Impossibile abilitare la modalità TNC: {error}",
+ "failed_disable_tnc": "Impossibile disabilitare la modalità TNC: {error}",
+ "failed_enable_bluetooth": "Impossibile abilitare il Bluetooth: {error}",
+ "failed_disable_bluetooth": "Impossibile disabilitare il Bluetooth: {error}",
+ "failed_start_pairing": "Impossibile avviare l'accoppiamento: {error}",
+ "failed_set_rotation": "Impossibile impostare la rotazione del display: {error}",
+ "failed_start_reconditioning": "Impossibile avviare il ricondizionamento del display: {error}"
+ },
+ "alerts": {
+ "firmware_downloaded": "Il firmware consigliato è stato scaricato e caricato.",
+ "dfu_ready": "Il dispositivo dovrebbe ora essere in modalità DFU. Puoi procedere con il flashing del firmware.",
+ "flash_success": "Il firmware è stato flashato con successo!",
+ "rebooting": "La scheda si sta riavviando!",
+ "eeprom_wipe_confirm": "Sei sicuro di voler cancellare la eeprom su questo dispositivo? L'operazione richiederà circa 30 secondi. Verrà mostrato un avviso al termine.",
+ "eeprom_wiped": "la eeprom è stata cancellata!",
+ "eeprom_dumped": "Dump della EEPROM eseguito in console",
+ "rnode_detected": "Rilevato RNode v{version}",
+ "provision_success": "il dispositivo è stato inizializzato!",
+ "hash_success": "l'hash del firmware è stato impostato!",
+ "tnc_enabled": "La modalità TNC è stata abilitata!",
+ "tnc_disabled": "La modalità TNC è stata disabilitata!",
+ "bluetooth_enabled": "Il Bluetooth è stato abilitato!",
+ "bluetooth_disabled": "Il Bluetooth è stato disabilitato!",
+ "bluetooth_pairing_pin": "PIN Accoppiamento Bluetooth: {pin}",
+ "bluetooth_pairing_started": "Modalità accoppiamento avviata (30s)",
+ "rotation_updated": "Rotazione aggiornata",
+ "reconditioning_started": "Ricondizionamento avviato"
+ }
+ },
+ "micron_editor": {
+ "title": "Editor Micron",
+ "description": "Modifica e visualizza l'anteprima del markup Micron con rendering live.",
+ "editor": "Editor",
+ "preview": "Anteprima",
+ "download": "Scarica",
+ "edit": "Modifica",
+ "view_preview": "Visualizza Anteprima",
+ "placeholder": "Inserisci qui il tuo markup Micron...",
+ "reset": "Reimposta",
+ "new_tab": "Nuova Scheda",
+ "rename_tab": "Rinomina Scheda",
+ "confirm_reset": "Sei sicuro di voler reimpostare l'editor? Tutte le schede e i contenuti andranno persi.",
+ "confirm_delete_tab": "Sei sicuro di voler eliminare questa scheda?",
+ "main_tab": "Principale",
+ "guide_tab": "Guida NomadNet",
+ "parser_by": "Utilizzando il Parser Micron di"
+ },
+ "paper_message": {
+ "title": "Messaggio Cartaceo",
+ "description": "Genera e leggi messaggi cartacei LXMF firmati tramite codici QR."
+ },
+ "rns_page_node": {
+ "title": "RNS Page Node",
+ "description": "Ospita pagine micron Nomadnet e condividi file con facilità."
+ },
+ "rns_tunnel": {
+ "title": "RNS Tunnel",
+ "description": "Crea tunnel per il traffico IP regolare su collegamenti di rete Reticulum."
+ },
+ "rns_filesync": {
+ "title": "RNS Filesync",
+ "description": "Condividi e sincronizza file in modo efficiente con altri peer della mesh."
+ },
+ "bots": {
+ "title": "LXMFy Bot",
+ "description": "Gestisci bot automatizzati per echo, note e promemoria usando LXMFy."
+ }
+ },
+ "ping": {
+ "title": "Ping Peer della Mesh",
+ "description": "Solo le destinazioni {code} rispondono al ping.",
+ "destination_hash": "Hash di Destinazione",
+ "timeout_seconds": "Timeout Ping (secondi)",
+ "start_ping": "Inizia Ping",
+ "stop": "Ferma",
+ "clear_results": "Cancella Risultati",
+ "drop_path": "Elimina Percorso",
+ "status": "Stato",
+ "running": "In esecuzione",
+ "idle": "Inattivo",
+ "last_rtt": "Ultimo RTT",
+ "last_error": "Ultimo Errore",
+ "console_output": "Output Console",
+ "streaming_responses": "Risposte seq in streaming in tempo reale",
+ "no_pings_yet": "Nessun ping ancora. Inizia una sessione per raccogliere dati RTT.",
+ "invalid_hash": "Hash di destinazione non valido!",
+ "timeout_must_be_number": "Il timeout deve essere un numero!"
+ },
+ "rncp": {
+ "file_transfer": "Trasferimento File",
+ "title": "RNCP - Reticulum Network Copy",
+ "description": "Invia e ricevi file sulla rete Reticulum usando le risorse RNS. Questo strumento consente un trasferimento affidabile dei file tra i nodi della mesh anche su collegamenti ad alta latenza.",
+ "usage_steps": "Come usare RNCP:",
+ "step_1": "1. Per **ricevere** un file, vai alla scheda **Ascolta**, inserisci gli hash delle identità consentite (chi può inviarti file) e clicca su **Inizia Ascolto**.",
+ "step_2": "2. Per **inviare** un file, ottieni l'**Hash di Destinazione** di un nodo in ascolto, inserisci il **Percorso File Locale** e clicca su **Invia File**.",
+ "step_3": "3. Per **recuperare** un file, ottieni l'**Hash di Destinazione** di un nodo in ascolto con 'Consenti Recupero' abilitato, inserisci il **Percorso File Remoto** e clicca su **Recupera File**.",
+ "send_file": "Invia File",
+ "fetch_file": "Recupera File",
+ "listen": "Ascolta",
+ "destination_hash": "Hash di Destinazione",
+ "file_path": "Percorso File",
+ "timeout_seconds": "Timeout (secondi)",
+ "disable_compression": "Disabilita compressione",
+ "cancel": "Annulla",
+ "progress": "Avanzamento",
+ "invalid_hash": "Hash di destinazione non valido!",
+ "provide_file_path": "Fornisci un percorso file!",
+ "file_sent_successfully": "File inviato con successo. ID Trasferimento: {id}",
+ "failed_to_send": "Impossibile inviare il file",
+ "remote_file_path": "Percorso File Remoto",
+ "save_path_optional": "Percorso di Salvataggio (opzionale)",
+ "save_path_placeholder": "Lascia vuoto per la directory corrente",
+ "allow_overwrite": "Consenti sovrascrittura",
+ "provide_remote_file_path": "Fornisci un percorso file remoto!",
+ "file_fetched_successfully": "File recuperato con successo. Salvato in: {path}",
+ "failed_to_fetch": "Impossibile recuperare il file",
+ "allowed_hashes": "Hash Identità Consentiti (uno per riga)",
+ "fetch_jail_path": "Percorso Jail di Recupero (opzionale)",
+ "allow_fetch": "Consenti recupero",
+ "start_listening": "Inizia Ascolto",
+ "stop_listening": "Ferma Ascolto",
+ "listening_on": "In ascolto su:",
+ "provide_allowed_hash": "Fornisci almeno un hash di identità consentito!",
+ "failed_to_start_listener": "Impossibile avviare il listener"
+ },
+ "rnprobe": {
+ "network_diagnostics": "Diagnostica di Rete",
+ "title": "RNProbe - Sonda Destinazione",
+ "description": "Sonda le destinazioni con dimensioni dei pacchetti personalizzate per testare la connettività e misurare l'RTT.",
+ "destination_hash": "Hash di Destinazione",
+ "full_destination_name": "Nome Destinazione Completo",
+ "probe_size_bytes": "Dimensione Sonda (byte)",
+ "number_of_probes": "Numero di Sonde",
+ "wait_between_probes": "Attesa tra le Sonde (secondi)",
+ "start_probe": "Inizia Sonda",
+ "stop": "Ferma",
+ "clear_results": "Cancella Risultati",
+ "summary": "Riepilogo",
+ "sent": "Inviate",
+ "delivered": "Consegnate",
+ "timeouts": "Timeout",
+ "failed": "Fallite",
+ "probe_results": "Risultati Sonda",
+ "probe_responses_realtime": "Risposte della sonda in tempo reale",
+ "no_probes_yet": "Nessuna sonda ancora. Inizia una sonda per testare la connettività.",
+ "probe_number": "Sonda #{number}",
+ "bytes": "byte",
+ "hops": "Salti",
+ "rtt": "RTT",
+ "rssi": "RSSI",
+ "snr": "SNR",
+ "quality": "Qualità",
+ "timeout": "Timeout",
+ "invalid_hash": "Hash di destinazione non valido!",
+ "provide_full_name": "Fornisci un nome destinazione completo!",
+ "failed_to_probe": "Impossibile sondare la destinazione"
+ },
+ "rnstatus": {
+ "network_diagnostics": "Diagnostica di Rete",
+ "title": "RNStatus - Stato della Rete",
+ "description": "Visualizza le statistiche delle interfacce e le informazioni sullo stato della rete.",
+ "refresh": "Aggiorna",
+ "include_link_stats": "Includi Statistiche Collegamento",
+ "sort_by": "Ordina per:",
+ "none": "Nessuno",
+ "bitrate": "Bitrate",
+ "rx_bytes": "Byte RX",
+ "tx_bytes": "Byte TX",
+ "total_traffic": "Traffico Totale",
+ "announces": "Annunci",
+ "active_links": "Collegamenti Attivi: {count}",
+ "no_interfaces_found": "Nessuna interfaccia trovata. Clicca su aggiorna per caricare lo stato.",
+ "mode": "Modalità",
+ "rx_packets": "Pacchetti RX",
+ "tx_packets": "Pacchetti TX",
+ "clients": "Client",
+ "peers_reachable": "raggiungibile",
+ "noise_floor": "Rumore di Fondo",
+ "interference": "Interferenza",
+ "cpu_load": "Carico CPU",
+ "cpu_temp": "Temp CPU",
+ "memory_load": "Carico Memoria",
+ "battery": "Batteria",
+ "network": "Rete",
+ "incoming_announces": "Annunci in Entrata",
+ "outgoing_announces": "Annunci in Uscita",
+ "airtime": "Airtime",
+ "channel_load": "Carico Canale"
+ },
+ "translator": {
+ "text_translation": "Traduzione Testo",
+ "title": "Traduttore",
+ "description": "Traduci testo usando l'API LibreTranslate o Argos Translate locale.",
+ "argos_translate": "Argos Translate",
+ "libretranslate": "LibreTranslate",
+ "api_server": "Server API LibreTranslate",
+ "api_server_description": "Inserisci l'URL di base del tuo server LibreTranslate (es. http://localhost:5000)",
+ "source_language": "Lingua Sorgente",
+ "auto_detect": "Rilevamento automatico",
+ "target_language": "Lingua Destinazione",
+ "select_target_language": "Seleziona lingua destinazione",
+ "argos_not_detected": "Argos Translate non rilevato",
+ "argos_not_detected_desc": "Per usare la traduzione locale, devi installare il pacchetto Argos Translate usando uno dei seguenti metodi:",
+ "method_pip_venv": "Metodo 1: pip (venv)",
+ "method_pipx": "Metodo 2: pipx",
+ "note_restart_required": "Nota: Dopo l'installazione, potrebbe essere necessario riavviare l'applicazione e installare i pacchetti lingua tramite la CLI di Argos Translate.",
+ "no_language_packages": "Nessun pacchetto lingua rilevato",
+ "no_language_packages_desc": "Argos Translate è installato ma non sono disponibili pacchetti lingua. Installa i pacchetti lingua usando uno dei seguenti comandi:",
+ "install_all_languages": "Installa tutte le lingue",
+ "install_specific_pair": "Installa coppia di lingue specifica (esempio: da Inglese a Tedesco)",
+ "after_install_note": "Dopo aver installato i pacchetti lingua, clicca su \"Aggiorna Lingue\" per ricaricare le lingue disponibili.",
+ "text_to_translate": "Testo da Tradurre",
+ "enter_text_placeholder": "Inserisci il testo da tradurre...",
+ "translate": "Traduci",
+ "swap": "Scambia",
+ "clear": "Cancella",
+ "translation": "Traduzione",
+ "source": "Sorgente",
+ "detected": "Rilevata",
+ "available_languages": "Lingue Disponibili",
+ "languages_loaded_from": "Le lingue sono caricate dall'API LibreTranslate o dai pacchetti Argos Translate.",
+ "refresh_languages": "Aggiorna Lingue",
+ "failed_load_languages": "Impossibile caricare le lingue. Assicurati che LibreTranslate sia in esecuzione o che Argos Translate sia installato.",
+ "failed_translate": "Traduzione fallita. Assicurati che LibreTranslate sia in esecuzione o che Argos Translate sia installato.",
+ "select_languages_warning": "Seleziona sia la lingua sorgente che quella di destinazione.",
+ "auto_detect_not_supported": "Il rilevamento automatico non è supportato con Argos Translate. Seleziona una lingua sorgente.",
+ "copied_to_clipboard": "Copiato negli appunti"
+ },
+ "call": {
+ "phone": "Telefono",
+ "voicemail": "Segreteria",
+ "settings": "Impostazioni",
+ "unknown": "Sconosciuto",
+ "call_ended": "Chiamata Terminata",
+ "call_declined": "Chiamata Rifiutata",
+ "initiation": "Inizializzazione...",
+ "send_to_voicemail": "Invia alla Segreteria",
+ "incoming_call": "Chiamata in Arrivo...",
+ "busy": "Occupato...",
+ "rejected": "Rifiutata...",
+ "calling": "Chiamata in corso...",
+ "available": "Disponibile...",
+ "ringing": "Squilla...",
+ "connecting": "Connessione...",
+ "connected": "Connesso",
+ "accept": "Accetta",
+ "decline": "Rifiuta",
+ "hangup": "Riattacca",
+ "answer_call": "Rispondi alla Chiamata",
+ "decline_call": "Rifiuta Chiamata",
+ "hangup_call": "Termina Chiamata",
+ "mute_mic": "Disattiva Mic",
+ "unmute_mic": "Attiva Mic",
+ "mute_speaker": "Disattiva Altoparlante",
+ "unmute_speaker": "Attiva Altoparlante",
+ "telephone": "Telefono",
+ "enter_identity_hash_to_call": "Inserisci un'identità da chiamare.",
+ "identity_hash": "Hash Identità",
+ "call_history": "Cronologia Chiamate",
+ "call_back": "Richiama",
+ "no_voicemails": "Nessun Messaggio in Segreteria",
+ "voicemails_will_appear_here": "Quando qualcuno ti lascia un messaggio, apparirà qui.",
+ "voicemail_inbox": "Messaggi Ricevuti",
+ "messages": "Messaggi",
+ "delete": "Elimina",
+ "voicemail_settings": "Impostazioni Segreteria",
+ "dependencies_missing": "Dipendenze Mancanti",
+ "voicemail_requires_espeak": "La segreteria richiede `espeak-ng` per generare i saluti. Installalo sul tuo sistema.",
+ "voicemail_requires_ffmpeg": "La segreteria richiede `ffmpeg` per elaborare i file audio. Installalo sul tuo sistema.",
+ "enable_voicemail": "Abilita Segreteria",
+ "enable_voicemail_description": "Accetta chiamate automaticamente e registra messaggi",
+ "greeting_message": "Messaggio di Saluto",
+ "enter_greeting_text": "Inserisci il testo del saluto...",
+ "greeting_text_description": "Questo testo verrà convertito in voce usando eSpeak NG.",
+ "tts_speed": "Velocità TTS",
+ "tts_pitch": "Tonalità TTS",
+ "tts_voice": "Voce TTS",
+ "tts_word_gap": "Intervallo Parole TTS",
+ "save_and_generate": "Salva e Genera",
+ "generating": "Generazione...",
+ "preview_greeting": "Anteprima Saluto",
+ "stop_preview": "Ferma Anteprima",
+ "answer_delay_seconds": "Ritardo Risposta (s)",
+ "max_recording_seconds": "Registrazione Max (s)",
+ "recording_voicemail": "Registrazione Messaggio",
+ "call_status": "Stato Chiamata",
+ "call_recording": "Registratore Chiamate",
+ "call_recording_description": "Registra le chiamate vocali in memoria",
+ "recordings": "Registrazioni",
+ "no_recordings": "Nessuna registrazione trovata",
+ "remote_rx": "Remoto (RX)",
+ "local_tx": "Locale (TX)",
+ "download_rx": "Scarica RX",
+ "download_tx": "Scarica TX",
+ "default_quality": "Qualità Predefinita",
+ "active_call": "Chiamata Attiva",
+ "status": "Stato",
+ "failed_to_answer_call": "Impossibile rispondere alla chiamata",
+ "failed_to_hangup_call": "Impossibile terminare la chiamata",
+ "failed_to_toggle_microphone": "Impossibile attivare/disattivare il microfono",
+ "failed_to_toggle_speaker": "Impossibile attivare/disattivare l'altoparlante",
+ "failed_to_switch_audio_profile": "Impossibile cambiare il profilo audio",
+ "failed_to_initiate_call": "Impossibile avviare la chiamata",
+ "enter_identity_hash_to_call_error": "Inserisci un'identità da chiamare",
+ "failed_to_save_settings": "Impossibile salvare le impostazioni",
+ "do_not_disturb": "Non Disturbare",
+ "load_more": "Carica Altri",
+ "go_to_phone_page": "Vai alla Pagina Telefono",
+ "search_history": "Cerca nella cronologia...",
+ "allow_calls_from_contacts_only": "Consenti chiamate solo dai contatti",
+ "settings_saved": "Impostazioni salvate",
+ "greeting_generated_successfully": "Saluto generato con successo",
+ "failed_to_generate_greeting": "Impossibile generare il saluto",
+ "no_greeting_audio_found": "Nessun audio del saluto trovato. Generane uno prima.",
+ "voicemail_deleted": "Messaggio eliminato",
+ "failed_to_delete_voicemail": "Impossibile eliminare il messaggio",
+ "ringtone": "Suoneria",
+ "ringtone_settings": "Impostazioni Suoneria",
+ "enable_custom_ringtone": "Abilita Suoneria Personalizzata",
+ "enable_custom_ringtone_description": "Riproduci un file audio personalizzato per tutte le chiamate in arrivo",
+ "upload_ringtone": "Carica Suoneria",
+ "uploading_ringtone": "Caricamento Suoneria...",
+ "no_custom_ringtone_uploaded": "Nessuna suoneria personalizzata caricata",
+ "supports_audio_formats": "Supporta MP3, OGG, WAV, M4A, FLAC. Verrà convertito in Opus.",
+ "preview_ringtone": "Anteprima Suoneria",
+ "remove_ringtone": "Rimuovi Suoneria",
+ "ringtone_uploaded_successfully": "Suoneria caricata con successo",
+ "failed_to_upload_ringtone": "Impossibile caricare la suoneria",
+ "ringtone_deleted": "Suoneria eliminata",
+ "failed_to_delete_ringtone": "Impossibile eliminare la suoneria",
+ "no_ringtone_audio_found": "Nessun audio della suoneria trovato. Caricane uno prima.",
+ "ringtone_volume": "Volume Suoneria",
+ "default_ringtone": "Suoneria Predefinita",
+ "ringtone_for_non_contacts": "Suoneria per chi non è nei contatti",
+ "primary_system_default": "Principale (Predefinita di Sistema)",
+ "random": "Casuale",
+ "edit_contact": "Modifica Contatto",
+ "add_contact": "Aggiungi Contatto",
+ "contact_name": "Nome Contatto",
+ "preferred_ringtone": "Suoneria Preferita",
+ "default_global_setting": "Predefinita (Impostazione Globale)",
+ "uploaded_ringtones": "Suonerie Caricate",
+ "save_contact": "Salva Contatto",
+ "primary_ringtone_set": "Suoneria principale impostata",
+ "failed_to_set_primary_ringtone": "Impossibile impostare la suoneria principale",
+ "failed_to_update_ringtone_name": "Impossibile aggiornare il nome della suoneria",
+ "failed_to_play_ringtone": "Impossibile riprodurre la suoneria",
+ "failed_to_play_voicemail": "Impossibile riprodurre il messaggio",
+ "web_audio_not_available": "Audio web non disponibile",
+ "no_audio_input_found": "Nessun dispositivo audio di input trovato. Controlla il microfono e i permessi.",
+ "microphone_permission_denied": "Permesso microfono negato. Consenti l'accesso e riprova.",
+ "failed_to_update_dnd": "Impossibile aggiornare lo stato Non Disturbare",
+ "failed_to_update_call_settings": "Impossibile aggiornare le impostazioni di chiamata",
+ "failed_to_update_recording_status": "Impossibile aggiornare lo stato di registrazione chiamata",
+ "call_history_cleared": "Cronologia chiamate cancellata",
+ "failed_to_clear_call_history": "Impossibile cancellare la cronologia chiamate",
+ "identity_banished": "Identità esiliata",
+ "failed_to_banish_identity": "Impossibile esiliare l'identità",
+ "name_and_hash_required": "Nome e hash identità richiesti",
+ "contact_updated": "Contatto aggiornato",
+ "contact_added": "Contatto aggiunto",
+ "contact_deleted": "Contatto eliminato",
+ "failed_to_delete_contact": "Impossibile eliminare il contatto",
+ "hash_copied": "Hash copiato negli appunti",
+ "failed_to_copy_hash": "Impossibile copiare l'hash",
+ "greeting_uploaded_successfully": "Saluto caricato con successo",
+ "greeting_deleted": "Saluto eliminato",
+ "failed_to_delete_greeting": "Impossibile eliminare il saluto",
+ "failed_to_start_recording_greeting": "Impossibile avviare la registrazione del saluto",
+ "greeting_recorded_from_mic": "Saluto registrato dal mic",
+ "failed_to_stop_recording_greeting": "Impossibile fermare la registrazione del saluto",
+ "failed_to_load_recording": "Impossibile caricare l'audio della registrazione",
+ "recording_deleted": "Registrazione eliminata",
+ "failed_to_delete_recording": "Impossibile eliminare la registrazione",
+ "call_sent_to_voicemail": "Chiamata inviata alla segreteria",
+ "failed_to_send_to_voicemail": "Impossibile inviare la chiamata alla segreteria",
+ "failed_load_audio_edit": "Impossibile caricare l'audio per la modifica",
+ "ringtone_saved": "Suoneria salvata con successo",
+ "failed_save_ringtone": "Impossibile salvare la suoneria modificata"
+ },
+ "tutorial": {
+ "title": "Guida Introduttiva",
+ "welcome": "Benvenuto in",
+ "welcome_desc": "Il futuro della comunicazione off-grid. Sicuro, decentralizzato e inarrestabile.",
+ "security": "Sicurezza e Prestazioni",
+ "security_desc": "Miglioramenti massicci in velocità, sicurezza e recupero dai crash.",
+ "security_desc_page": "Miglioramenti massicci in velocità, sicurezza e integrità con recupero dai crash integrato.",
+ "maps": "Mappe",
+ "maps_desc": "OpenLayers con supporto MBTiles (esportazione e supporto offline) e endpoint API personalizzati.",
+ "maps_desc_page": "Supporto OpenLayers con MBTiles offline (esportazione e supporto offline) e endpoint API personalizzati per mappe online.",
+ "voice": "Voce LXST Completa",
+ "voice_desc": "Segreteria, suonerie, rubrica e condivisione contatti.",
+ "voice_desc_page": "Chiamate vocali cristalline su mesh. Segreteria, suonerie personalizzate e scoperta rubrica.",
+ "tools": "Strumenti Avanzati",
+ "tools_desc": "Editor Micron, NomadNet, strumenti RNS, Documentazione.",
+ "tools_desc_page": "Editor Micron, nodi NomadNet, strumenti RNS e documentazione integrata.",
+ "archiver": "Archiviatore",
+ "archiver_desc": "Archiviazione pagine manuale e automatizzata.",
+ "archiver_desc_page": "Strumenti di archiviazione pagine manuali e automatizzati per la navigazione offline.",
+ "banishment": "Esilio",
+ "banishment_desc": "Esilia persone e nodi fastidiosi, con supporto per il blocco degli annunci a livello di blackhole RNS",
+ "palette": "Tavolozza Comandi + Scorciatoie",
+ "palette_desc": "Naviga istantaneamente ovunque e personalizza le scorciatoie.",
+ "palette_desc_page": "Naviga nell'intera applicazione e personalizza il tuo flusso di lavoro con scorciatoie istantanee.",
+ "i18n": "Supporto i18n",
+ "i18n_desc": "Disponibile in Inglese, Tedesco e Russo.",
+ "i18n_desc_page": "Supporto completo all'internazionalizzazione per le lingue Inglese, Tedesco e Russo.",
+ "more_features": "+ molte altre funzioni!",
+ "connect": "Connettiti alla Mesh",
+ "connect_desc": "Per inviare messaggi, devi connetterti a un'interfaccia Reticulum.",
+ "connect_desc_page": "Usa una delle reti pubbliche qui sotto o aggiungi un'interfaccia personalizzata dalla pagina Interfacce.",
+ "suggested_networks": "Reti Pubbliche Suggerite",
+ "suggested_relays": "Relè Suggeriti",
+ "use": "Usa",
+ "online": "Online",
+ "custom_interfaces": "Interfacce Personalizzate",
+ "custom_interfaces_desc": "Vuoi aggiungere un'interfaccia specifica? Vai alla pagina Interfacce per configurare una connessione personalizzata.",
+ "custom_interfaces_desc_page": "Per qualsiasi relè privato o hardware gestito da te, aggiungilo tramite la pagina Interfacce dedicata.",
+ "open_interfaces": "Apri la pagina Interfacce",
+ "learn_create": "Impara e Crea",
+ "learn_create_desc": "Scopri come usare MeshChatX al massimo delle sue potenzialità.",
+ "learn_create_desc_page": "Scopri come usare MeshChatX al massimo delle sue potenzialità e crea i tuoi contenuti.",
+ "documentation": "Documentazione",
+ "documentation_desc": "Leggi la documentazione ufficiale di MeshChatX e Reticulum.",
+ "documentation_desc_page": "Guide complete per MeshChatX e lo stack di rete Reticulum sottostante.",
+ "meshchatx_docs": "Doc MeshChatX",
+ "reticulum_docs": "Doc Reticulum",
+ "read_meshchatx_docs": "Leggi Doc MeshChatX",
+ "reticulum_manual": "Manuale di Rete Reticulum",
+ "micron_editor": "Editor Micron",
+ "micron_editor_desc": "Dai un'occhiata all'Editor Micron per una guida sulla creazione di pagine mesh-native.",
+ "micron_editor_desc_page": "Impara come creare pagine mesh-native e contenuti interattivi usando il linguaggio di markup Micron.",
+ "open_micron_editor": "Apri Editor Micron",
+ "paper_messages": "Esplora Nodi NomadNet",
+ "paper_messages_desc": "Sfoglia pagine e servizi decentralizzati.",
+ "send_messages": "Invia Messaggi",
+ "send_messages_desc": "Inizia una conversazione sicura.",
+ "explore_nodes": "Visualizza Nodi",
+ "explore_nodes_desc": "Visualizza la mappa e la topologia della rete.",
+ "voice_calls": "Chiamate Vocali",
+ "voice_calls_desc": "Prova il fantastico editor di suonerie!",
+ "ready": "Pronto per Iniziare!",
+ "ready_desc": "Tutto è configurato. Devi riavviare l'applicazione affinché le modifiche abbiano effetto.",
+ "ready_desc_page": "MeshChatX è ora configurato. Devi riavviare l'applicazione per finalizzare la connessione.",
+ "docker_note": "Se stai usando Docker, assicurati di riavviare il container",
+ "restart_required": "Riavvio Richiesto",
+ "restart_desc_page": "Se stai usando Docker, assicurati di riavviare il container. Le app native si riavvieranno automaticamente.",
+ "back": "Indietro",
+ "skip": "Salta",
+ "next": "Avanti",
+ "restart_start": "Avvia MeshChatX",
+ "skip_setup": "Salta Configurazione",
+ "continue": "Continua",
+ "skip_confirm": "Sei sicuro di voler saltare la configurazione? Dovrai aggiungere le interfacce manualmente in seguito.",
+ "discovery_question": "Vuoi usare la scoperta delle interfacce della comunità e la connessione automatica?",
+ "discovery_desc": "Questo consente a MeshChatX di trovare e connettersi automaticamente ai nodi pubblici della comunità vicino a te o su internet.",
+ "yes": "Sì, usa la scoperta",
+ "no": "No, configurazione manuale",
+ "discovery_enabled": "Scoperta della comunità abilitata",
+ "failed_enable_discovery": "Impossibile abilitare la scoperta"
+ },
+ "command_palette": {
+ "search_placeholder": "Cerca comandi, naviga o trova peer...",
+ "no_results": "Nessun risultato trovato per \"{query}\"",
+ "group_actions": "Azioni",
+ "group_recent": "Peer Recenti",
+ "group_contacts": "Contatti",
+ "footer_navigate": "Naviga",
+ "footer_select": "Seleziona",
+ "nav_messages": "Messaggi",
+ "nav_messages_desc": "Apri la pagina dei messaggi",
+ "nav_nomad": "Nomad Network",
+ "nav_nomad_desc": "Sfoglia le pagine Nomad Network",
+ "nav_map": "Mappa",
+ "nav_map_desc": "Visualizza la mappa della topologia di rete",
+ "nav_paper": "Messaggi Cartacei",
+ "nav_paper_desc": "Genera messaggi offline",
+ "nav_call": "Chiamate Vocali",
+ "nav_call_desc": "Apri la pagina delle chiamate vocali",
+ "nav_settings": "Impostazioni",
+ "nav_settings_desc": "Apri la pagina delle impostazioni",
+ "nav_ping": "Ping",
+ "nav_ping_desc": "Ping nodi di rete",
+ "nav_rnprobe": "RNProbe",
+ "nav_rnprobe_desc": "Sonda i nodi Reticulum",
+ "nav_rncp": "RNCP",
+ "nav_rncp_desc": "Reticulum Control Protocol",
+ "nav_rnstatus": "RNStatus",
+ "nav_rnstatus_desc": "Visualizza lo stato di Reticulum",
+ "nav_rnpath": "RNPath",
+ "nav_rnpath_desc": "Visualizza i percorsi di rete",
+ "nav_rnpath_trace": "RNPath Trace",
+ "nav_rnpath_trace_desc": "Visualizza i percorsi di rete",
+ "nav_translator": "Traduttore",
+ "nav_translator_desc": "Traduci messaggi",
+ "nav_forwarder": "Inoltro",
+ "nav_forwarder_desc": "Strumento di inoltro messaggi",
+ "nav_documentation": "Documentazione",
+ "nav_documentation_desc": "Visualizza la documentazione",
+ "nav_micron_editor": "Editor Micron",
+ "nav_micron_editor_desc": "Crea pagine mesh-native",
+ "nav_rnode_flasher": "Flasher RNode",
+ "nav_rnode_flasher_desc": "Flasha il firmware RNode",
+ "nav_debug_logs": "Log di Debug",
+ "nav_debug_logs_desc": "Visualizza i log di debug",
+ "action_sync": "Sincronizza Messaggi",
+ "action_sync_desc": "Sincronizza con il nodo di propagazione",
+ "action_compose": "Componi Messaggio",
+ "action_compose_desc": "Inizia un nuovo messaggio",
+ "action_orbit": "Attiva/Disattiva Orbita",
+ "action_orbit_desc": "Attiva o disattiva la modalità orbita",
+ "action_bouncing_balls": "Palle Rimbalzanti",
+ "action_bouncing_balls_desc": "Attiva o disattiva la modalità palle rimbalzanti",
+ "action_getting_started": "Guida Introduttiva",
+ "action_getting_started_desc": "Mostra la guida introduttiva",
+ "action_changelog": "Changelog",
+ "action_changelog_desc": "Visualizza le novità"
+ }
+}

diff --git a/meshchatx/src/frontend/locales/ru.json b/meshchatx/src/frontend/locales/ru.json
index e878f3bb..af5494ad 100644
--- a/meshchatx/src/frontend/locales/ru.json
+++ b/meshchatx/src/frontend/locales/ru.json
@@ -194,9 +194,42 @@
"emergency_mode_active": "Аварийный режим активен — используется база данных в оперативной памяти и ограниченные службы.",
"blackhole_integration_enabled": "Интеграция Blackhole",
"blackhole_integration_description": "Автоматически блокировать (blackhole) личности на транспортном уровне Reticulum при изгнании пользователей в MeshChatX.",
- "failed_announce": "failed to announce",
- "search_settings": "Search settings...",
- "show_qr": "Show QR Code"
+ "failed_announce": "ошибка анонса",
+ "search_settings": "Поиск настроек...",
+ "show_qr": "Показать QR-код",
+ "csp_settings": "Политика безопасности контента (CSP)",
+ "csp_description": "Вручную добавьте разрешенные домены и источники для различных типов ресурсов. Это полезно для пользовательских серверов тайлов, ботов или внешних интеграций.",
+ "csp_extra_connect_src": "Дополнительные источники соединений",
+ "csp_extra_connect_src_description": "Дополнительные источники для соединений fetch/websocket (например, https://api.example.com).",
+ "csp_extra_img_src": "Дополнительные источники изображений",
+ "csp_extra_img_src_description": "Дополнительные источники для изображений и тайлов.",
+ "csp_extra_frame_src": "Дополнительные источники фреймов",
+ "csp_extra_frame_src_description": "Дополнительные источники для iframe.",
+ "csp_extra_script_src": "Дополнительные источники скриптов",
+ "csp_extra_script_src_description": "Дополнительные источники для скриптов (только для продвинутых пользователей).",
+ "csp_extra_style_src": "Дополнительные источники стилей",
+ "csp_extra_style_src_description": "Дополнительные источники для таблиц стилей.",
+ "location": "Местоположение",
+ "location_source": "Источник местоположения",
+ "location_source_browser": "Автоматически (браузер)",
+ "location_source_manual": "Вручную",
+ "location_source_browser_desc": "Использует API геолокации вашего браузера. Примечание: в десктопном приложении это может использовать сервисы Google.",
+ "location_source_manual_desc": "Используйте координаты, введенные вручную, для максимальной конфиденциальности.",
+ "location_manual_lat": "Широта",
+ "location_manual_lon": "Долгота",
+ "location_manual_alt": "Высота (м)",
+ "telemetry_enabled": "Телеметрия включена",
+ "telemetry_description": "Разрешить MeshChatX отправлять и получать телеметрические данные. Это включает ответ на запросы местоположения от доверенных узлов.",
+ "telemetry_trusted_peers": "Доверенные телеметрические узлы",
+ "telemetry_no_trusted_peers": "Нет настроенных доверенных узлов. Добавьте узлы в список доверенных из меню чата, чтобы разрешить им запрашивать ваше местоположение.",
+ "telemetry_revoke_trust": "Отозвать доверие",
+ "telemetry_trust_revoked": "Доверие телеметрии для {name} отозвано",
+ "telemetry_trust_granted_alert": "Узел теперь является доверенным для телеметрии.",
+ "telemetry_trust_revoked_alert": "Доверие телеметрии отозвано.",
+ "telemetry_trust_failed": "Не удалось обновить доверие телеметрии.",
+ "telemetry_trust_revoke": "Отозвать доверие телеметрии",
+ "telemetry_trust_grant": "Доверять телеметрии",
+ "location_manage_desc": "Управление тем, как передается ваше местоположение."
},
"common": {
"open": "Открыть",
@@ -362,6 +395,7 @@
"export_all": "Экспорт всех",
"search_placeholder": "Поиск по имени, типу, хосту...",
"all": "Все",
+ "connected_only": "Только подключенные",
"all_types": "Все типы",
"no_interfaces_found": "Интерфейсы не найдены",
"no_interfaces_description": "Измените параметры поиска или добавьте новый интерфейс.",
@@ -572,7 +606,10 @@
"no_contacts_telephone": "No contacts found in telephone",
"failed_load_contacts": "Failed to load contacts",
"location_request_sent": "Location request sent",
- "failed_send_location_request": "Failed to send location request",
+ "failed_send_location_request": "Не удалось отправить запрос местоположения",
+ "fetching_location": "Получение местоположения...",
+ "location_sent": "Местоположение успешно отправлено",
+ "location_requested": "Запрошено местоположение",
"remove_image_confirm": "Are you sure you want to remove this image attachment?",
"failed_start_recording": "failed to start recording",
"remove_audio_confirm": "Are you sure you want to remove this audio attachment?",
@@ -740,6 +777,21 @@
"queues_purged": "Announce queues purged",
"failed_purge": "Failed to purge queues"
},
+ "rnpath_trace": {
+ "title": "RNS Трассировка пути",
+ "description": "Визуализация пути и переходов к любому хэшу назначения в сети.",
+ "destination_hash": "Хэш назначения",
+ "placeholder": "Введите 32-символьный хэш...",
+ "trace": "Трассировать путь",
+ "tracing": "Трассировка пути через сеть...",
+ "total_hops": "Всего переходов",
+ "interface": "Выходной интерфейс",
+ "next_hop": "Следующий переход",
+ "ready_title": "Трассировка пути",
+ "ready_desc": "Введите хэш назначения выше, чтобы увидеть, как пакеты проходят через сеть.",
+ "unknown_hops": "{count} промежуточных переходов",
+ "ping_test": "Проверить с помощью Ping"
+ },
"translator": {
"title": "Translator",
"description": "Перевод текста через LibreTranslate API или локальный Argos Translate."
@@ -897,15 +949,15 @@
"description": "Создание и чтение подписанных бумажных сообщений LXMF через QR-коды."
},
"rns_page_node": {
- "title": "RNS Page-узел",
+ "title": "RNS Page Node",
"description": "Хостинг микрон-страниц Nomadnet и удобный обмен файлами."
},
"rns_tunnel": {
- "title": "RNS-туннель",
+ "title": "RNS Tunnel",
"description": "Туннелирование обычного IP-трафика через сеть Reticulum."
},
"rns_filesync": {
- "title": "RNS-файлообмен",
+ "title": "RNS Filesync",
"description": "Эффективный обмен и синхронизация файлов с другими узлами mesh."
},
"bots": {
@@ -1328,14 +1380,16 @@
"nav_settings_desc": "Открыть страницу настроек",
"nav_ping": "Ping",
"nav_ping_desc": "Пинг узлов сети",
- "nav_rnprobe": "RN Probe",
+ "nav_rnprobe": "RNProbe",
"nav_rnprobe_desc": "Зондирование узлов Reticulum",
- "nav_rncp": "RN CP",
+ "nav_rncp": "RNCP",
"nav_rncp_desc": "Reticulum Control Protocol",
- "nav_rnstatus": "RN Status",
+ "nav_rnstatus": "RNStatus",
"nav_rnstatus_desc": "Просмотр статуса Reticulum",
- "nav_rnpath": "RN Path",
+ "nav_rnpath": "RNPath",
"nav_rnpath_desc": "Просмотр сетевых путей",
+ "nav_rnpath_trace": "Трассировка пути",
+ "nav_rnpath_trace_desc": "Визуализация сетевых путей",
"nav_translator": "Переводчик",
"nav_translator_desc": "Перевод сообщений",
"nav_forwarder": "Форвардер",
@@ -1450,4 +1504,4 @@
"banishment_lifted": "Banishment lifted successfully",
"failed_lift_banishment": "Failed to lift banishment"
}
-}
\ No newline at end of file
+}


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────